私は現在、forループをforループと置き換えようとしています。私はいつもundefined
を得る。これはjavascriptオブジェクトでも可能ですか?for for for regular forループをオブジェクトに置き換えます。
以上のサンプル・オブジェクトのIループ:
var el = {
1: {type: "fish", commonName: "clownfish", scientificName: "sdasd", gender: "m", price: 1.99},
2: {type: "fish", commonName: "dragonfish", scientificName: "dada", gender: "f", price: 2.99}
};
は、アプローチでのための私の作業:
for (var element in el) {
if (el[element].type === type && el.hasOwnProperty(element)) {
elementNum++;
}
}
いつも私にCannot read property 'type' of undefined
を取得するループアプローチのためのシンプル:
for(var i = 0, x = Object.keys(el).length; i < x; i++) {
if (el[i].type === type && el.hasOwnProperty(i)) {
elementNum++;
}
}
@Matias正しい答えを持っていますが、あなたは、配列を使用していない理由を私は思ったんだけど?いくつかのインデックスはスキップされるのでしょうか?また、 'el [i] .type === type && el.hasOwnProperty(i))'の順序を 'el [i]'が存在しない場合に '.type'をチェックしないように(JavaScriptが 'false 'のものを見つけたら' if AND'ステートメントを調べるのを止めるので – Howzieky