在js中向后迭代哈希

时间:2012-03-29 17:17:32

标签: javascript

所以我想说我有一个哈希

a = { foo : "bar" , zap : "zip" , baz : "taz" }

我可以像这样进行互动

for( var n in a ) {
 doSomething(a[n]);
}

但我希望通过它反过来......

关于如何做到这一点的想法?

4 个答案:

答案 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


http://jsfiddle.net/ddFqD/

答案 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]]);
}

嗯,这似乎工作正常:)