1

有没有办法在不使用 for in 循环的情况下迭代对象中的属性?

根据 Nicholas C. Zakas 的说法,for in 循环迭代对象的时间比 for 循环长 8 倍,但我无法找到一种方法来迭代对象的属性而不将其名称更改为 1、2 , 3 等女巫并不理想。

速度是我主要关心的问题。

4

2 回答 2

2

你不能。对象没有索引属性。

于 2012-06-12T09:29:56.820 回答
2

您可以拥有另一个数组来保存您的密钥。像这样的东西:

var obj = {
    'key': 'value',
    'some': 'other value'
},
    arr = [ 'key', 'some' ];

for ( var i = 0, l = arr.length; i < l; i++ ) {
    console.log( obj[ arr[ i ] ] );
}

然而,这很丑陋。这种情况下的性能永远不会成为你的瓶颈,你应该更喜欢可读性。上面的代码可以这样完成:

Object.keys( obj ).forEach( function( key ) {
    console.log( obj[ key ] );
} );

这只是更清洁和更具可读性。(for..in也可以使用,只是为了举例)

于 2012-06-12T09:38:28.267 回答