有没有办法在不使用 for in 循环的情况下迭代对象中的属性?
根据 Nicholas C. Zakas 的说法,for in 循环迭代对象的时间比 for 循环长 8 倍,但我无法找到一种方法来迭代对象的属性而不将其名称更改为 1、2 , 3 等女巫并不理想。
速度是我主要关心的问题。
有没有办法在不使用 for in 循环的情况下迭代对象中的属性?
根据 Nicholas C. Zakas 的说法,for in 循环迭代对象的时间比 for 循环长 8 倍,但我无法找到一种方法来迭代对象的属性而不将其名称更改为 1、2 , 3 等女巫并不理想。
速度是我主要关心的问题。
你不能。对象没有索引属性。
您可以拥有另一个数组来保存您的密钥。像这样的东西:
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
也可以使用,只是为了举例)