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 };