2013-08-23 167 views
1

如何從後到前迭代javascript對象。反向對象迭代(javascript)

對象看起來像這樣。 {"33":140, "34":100, "35":120, "36":200}

我希望它顯示像這樣...

36 | 200 
35 | 120 
34 | 100 
33 | 140 

我想先進行排序,然後顯示,但它按第二個數字,而不是重點。 我將如何從後到前迭代,或基於密鑰進行反向排序。

我意識到這是非常簡單的,但是我得到它非常沮喪....

+4

迭代對象屬性時無法保證訂單。而且你不能排序對象。我相信你將不得不使用一組對象,並對其進行排序。 – bfavaretto

+0

@bfavaretto正確,對象沒有排序 - 但我們確定可以使用這些鍵,對它們進行排序並使用它(請參閱我的答案)。 –

+0

@IngoBürk我做了,並upvoted你的答案。這確實是最好的方法。 – bfavaretto

回答

4

一個相當現代的版本是這樣的:

Object.keys(obj).sort(function (a, b) { 
    return Number(b) - Number(a); 
}).forEach(function (current) { 
    console.log(current + ' | ' + obj[current]); 
}); 

類似的,但多一點點代碼,它也可以用於舊版瀏覽器。或者你使用墊片。

+1

這真的很接近OP實際需要的東西('console.log(obj [current])') – bfavaretto

+2

他想記錄兩者。我只是覺得我不會把所有的樂趣都拿出來。它解決了實際問題,他可以處理輸出。 –

+0

謝謝!! ...非常高效,緊湊.....比我正在忙着烹飪的解決方案好得多......依靠交替陣列和兩個循環,在繁瑣的功能 – KyleK