有没有办法迭代对象中的属性,而不使用for in循环?如何通过索引引用对象属性?
根据Nicholas C. Zakas的说法,for循环遍历一个对象的时间比for循环长8倍,但我无法找到一种方法来遍历对象的属性,而无需将其名称更改为某种像1,2,3等女巫并不理想。
速度是我最关心的问题。
有没有办法迭代对象中的属性,而不使用for in循环?如何通过索引引用对象属性?
根据Nicholas C. Zakas的说法,for循环遍历一个对象的时间比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
也可以使用,它只是为了这个例子)
你不行。对象没有索引属性。
这是一个很好的解决方法,谢谢你:) – Luka
forEach函数结束后缺少右括号。 –
@MarkKnol感谢您的错字,修复! –