【发布时间】:2013-01-16 06:15:07
【问题描述】:
我目前在我的代码中使用两种迭代:
对于对象(sn-p 1):
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
// do stuff with key and obj[key]
}
}
对于数组(sn-p 2):
for (var i=0, count=arr.length;i<count;i++) {
// do stuff with i and arr[i]
}
我想简化我的代码并为对象和数组使用一个函数(sn-p 3):
var keys=Object.keys(arrorobj);
for (var i=0, count=keys.length;i<count;i++) {
// do stuff with keys[i] and arrorobj[keys[i]]
}
我知道 sn-p 3 适用于对象,但它是否也可以像我期望的那样对数组工作,并替换 sn-ps 1 和 2?特别是,我可以保证在所有浏览器(嗯,至少支持 Object.keys 的浏览器)中,sn-p 3 都会尊重键顺序(从索引 0 开始)?
[edit] 我计划将它特别用于对象的深度合并。我当前的代码很重,因为在每个级别我都有 3 个分支,具体取决于类型(数组、对象或其他)。
【问题讨论】:
标签: javascript arrays object for-loop