我需要按顺序遍历数组,就像在this question中一样。但是,我还需要访问key
名称。如何在数字索引循环中执行此操作?
for(i=0; i<arr.length; i++){
alert(arr[i].key); // clearly won't work
}
但
for(key in arr){
alert(arr[key]); // works, but it doesn't loop through in the right order
}
答案 0 :(得分:1)
您无法列出JavaScript对象的属性,并希望按特定顺序返回它们。
阅读此blog post并查看有关 for loop order 的部分。
答案 1 :(得分:0)
如果要对对象进行“排序”,则可以将键名放在数组中,对其进行排序,然后按照它们在数组中的顺序访问对象属性,例如:
var obj = { '3':3, '0':0, '2':2, '1':1};
var props = [];
for (var p in obj) {
if (obj.hasOwnProperty(p)) {
props.push(p);
}
}
props.sort();
for (var i=0, iLen=props.length; i<iLen; i++0 {
alert(obj[props[i]]); // 0, 1, 2, 3
}
关于对象属性的顺序,ES5说:
枚举属性的机制和顺序(步骤6.a) 第一个算法,第二个步骤7.a未指定。
你可能会在一个流行的图书馆的评论中发现“首先列举自己的属性”的说法,这与至少一个广泛使用的浏览器的行为相矛盾,因此应该被忽视。