安全のために、ループ内のキーのプロパティ所有者を常に確認する必要があります。for in
for (var i in PriceRanges[purpose])
{
if (PriceRanges[purpose].hasOwnProperty(i))
{
html += '<option value="' + PriceRanges[purpose][i].id + '">'
+ PriceRanges[purpose][i].text + '</option>';
}
}
for
しかし、これは配列を繰り返し処理しているようにfor in
見えi
ますfor in
。
for (var i=0;i<PriceRanges[purpose].length;i++)
{
html += '<option value="' + PriceRanges[purpose][i].id + '">'
+ PriceRanges[purpose][i].text + '</option>';
}
もちろん、非常に安全にするには、両方のループに if を追加する必要があります。
if (PriceRanges[purpose][i].id && PriceRanges[purpose][i].text)
存在しないプロパティの使用を避けるため (そのため、未定義が返されます)