簡體   English   中英

在js中向后迭代哈希

[英]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


http://jsfiddle.net/ddFqD/

如果你想進行有序遍歷,請不要使用哈希值。

哈希不是按設計排序的

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM