循环浏览javascript对象
for(key in object){
// sth. great...
}
是否可以通过对象循环使用此方法?提前谢谢。
答案 0 :(得分:5)
这是不可能的
ECMAScript对象是无序属性集合 ES3 Specs
枚举属性的机制和顺序(第一个算法中的步骤6.a,第二个算法中的步骤7.a)未指定。
枚举期间可以删除要枚举的对象的属性。如果删除枚举期间尚未访问的属性,则不会访问该属性。如果在枚举期间将新属性添加到要枚举的对象,则无法保证在活动枚举中访问新添加的属性。在任何枚举中不得多次访问属性名称。 ES5 Specs
<子> 但是,你可以做的是在对象的关键数组上向后迭代。哪个不意味着您神奇地为对象提供订单。
var obj = {a: 0, b:1, c:2};
for (var keys=Object.keys (obj),key; key = keys.pop() ;) {
console.log (key) // c, b, a.
}
答案 1 :(得分:3)
没有“前锋”和“后退”。 JavaScript中的对象键没有顺序。
虽然大多数浏览器会按照添加的顺序遍历它们,但这并不能保证,并且不属于规范。
所以答案是:不,你不能。
如果你坚持,请这样做:
var keys = [], key, i;
for ( key in object ) {
object.hasOwnProperty(key) && keys.push(key);
}
i = keys.length;
while ( i-- ) {
// use object[ keys[i] ]
}