2013-08-23 143 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