0

ここでルーキーJSの質問:

for( var p in ['nodeName', 'nodeType', 'tagName', 'localName'] ) {
    console.log( p + '=' + all[i][p] + '\n' );
}

私は次のようなものを見ることを期待していました

nodeName=DIV

代わりに、私は

0=undefined

配列を変数に割り当てて、インデックスを作成できるようにする必要がありますか?for-inでこの構文を使用して、配列から文字列を取得する方法はありますか?

ありがとう!

4

1 に答える 1

6

for..in配列に使用することはほとんどの場合間違っています。値-sではなく、オブジェクトプロパティを反復処理するため、0、1、2、および3が生成されます。カスタムメソッドを使用して拡張する場合はさらに悪化Array.prototypeします(拡張とは異なりObject.prototype、大したことはありません)。 )。を使用すると、それらの名前も繰り返されfor..inます。

あなたが望むことをする適切な方法はこれです:

var foo = [...];
for(var i = 0; i < foo.length; i++) {
    // use foo[i]
}

またはこれ(最近のブラウザまたは関数がシムされている場合):

[...].forEach(function(value) {
    // use value
});
于 2012-08-17T22:25:39.537 に答える