[英]iterating over a hash backwards in js
所以我要說我有一個哈希
a = { foo : "bar" , zap : "zip" , baz : "taz" }
我可以像這樣對它進行交流
for( var n in a ) {
doSomething(a[n]);
}
但是我想通過它倒退......
關於如何做到這一點的想法?
沒有向前或向后的對象屬性,因為規范沒有定義排序。 我很確定,甚至不能保證兩次遍歷必然會以相同的順序為您提供屬性名稱。
(嚴格來說,你也不知道屬性名稱是否經過哈希處理,但這並不重要。)
如果您需要維護一個排序(可能根據添加屬性的順序),您必須使用維護包含鍵的並行數組的東西來包裝屬性存儲。 然后它可以公開迭代器API以允許向前和向后遍歷。
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
如果你想進行有序遍歷,請不要使用哈希值。
哈希不是按設計排序的
a = { foo : "bar" , zap : "zip" , baz : "taz" }
for( var i=Object.keys(a).length-1; i>=0; --i){
doSomething(a[Object.keys(a)[i]]);
}
嗯這似乎工作正常:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.