Jak iterovat klíče pole v Javascriptu?

Mám pole vytvořené s tímto kódem:

var widthRange = new Array();
widthRange[46] = { min:0,  max:52 };
widthRange[66] = { min:52, max:70 };
widthRange[90] = { min:70, max:94 };

Chci získat každou z hodnot 46, 66, 90 ve smyčce. Zkusil jsem for (var key in widthRange) ale to mi dává spoustu dalších vlastností (předpokládám, že jsou to funkce na objektu). Nemohu použít běžnou smyčku for, protože hodnoty nejsou sekvenční.

Odpověď

Musíte zavolat na číslo hasOwnProperty funkce pro kontrolu, zda je vlastnost skutečně definována na samotném objektu (na rozdíl od jeho prototypu), takto:

for (var key in widthRange) {
    if (key === 'length' || !widthRange.hasOwnProperty(key)) continue;
    var value = widthRange[key];
}

Upozorňujeme, že na length potřebujete samostatnou kontrolu .
Zde byste však pole vůbec neměli používat; měli byste použít běžný předmět. Všechny objekty Javascript fungují jako asociativní pole.

Například:

var widthRange = { };  //Or new Object()
widthRange[46] = { sel:46, min:0,  max:52 };
widthRange[66] = { sel:66, min:52, max:70 };
widthRange[90] = { sel:90, min:70, max:94 };