如何通过索引引用对象属性?

时间:2012-06-12 09:29:24

标签: javascript performance object

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

根据Nicholas C. Zakas的说法,for循环遍历一个对象比for循环需要花费8倍的时间,但是我找不到一种方法来迭代一个对象的属性,而不会将它们的名字改为类似1,2,3等女巫并不理想。

速度是我的主要关注点。

2 个答案:

答案 0 :(得分:2)

你做不到。对象没有索引属性。

答案 1 :(得分: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,这只是为了示例)