有没有一种方法可以在不使用 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
,只是为了举例)
关于javascript - 如何通过索引引用对象属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10993873/