所以我想说我有一个哈希
a = { foo : "bar" , zap : "zip" , baz : "taz" }
我可以像这样进行互动
for( var n in a ) {
doSomething(a[n]);
}
但我希望通过它反过来......
关于如何做到这一点的想法?
答案 0 :(得分:7)
对象属性没有向前或向后,因为规范没有定义排序。我很确定,甚至不能保证两次遍历必然会以相同的顺序为您提供属性名称。
(严格地说,您也不知道属性名称是否经过哈希处理,但这并不重要。)
如果您需要维护一个排序(可能根据添加属性的顺序),您必须使用维护包含键的并行数组的东西来包装属性存储。然后它可以公开迭代器API以允许向前和向后遍历。
答案 1 :(得分:1)
var a = { foo : "bar" , zap : "zip" , baz : "taz" },
propertycount = Object.keys(a).length,
i = propertycount - 1;
for(i; i >= 0; i--){
console.log(a[Object.keys(a)[i]]);
}
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys
答案 2 :(得分:1)
如果要进行有序遍历,请不要使用哈希值。
哈希按设计排序
答案 3 :(得分:0)
a = { foo : "bar" , zap : "zip" , baz : "taz" }
for( var i=Object.keys(a).length-1; i>=0; --i){
doSomething(a[Object.keys(a)[i]]);
}
嗯,这似乎工作正常:)