按属性值排序javascript编号的键对象

时间:2018-01-05 10:12:52

标签: javascript javascript-objects

我想按Value

排序以下对象
var myObj = {"1": {"Value": 40}, "2": {"Value": 10}, "3": {"Value": 30}, "4": {"Value": 20}};

我尝试使用sort来获取所需顺序的键,但在使用它时创建新对象对我来说是个问题。我尝试了下面的方法来排序:

var myObj = {"1": {"Value": 40}, "2": {"Value": 10}, "3": {"Value": 30}, "4": {"Value": 20}};
sorted = Object.keys(myObj).sort((a,b) => myObj[a].Value - myObj[b].Value).reduce((_sortedObj, key) => ({
   ..._sortedObj, 
   [key]: myObj[key]
 }), {});
console.log(sorted);

有人可以指出我在哪里弄错了吗?

1 个答案:

答案 0 :(得分:0)

  

Javascript对象不像数组那样有序。它们是关键价值   对,您可以通过它的密钥在固定时间内访问任何值。

如果您希望对它们进行排序,那么您可以迭代对象的属性并将它们推入数组并按照您想要的顺序对它们进行排序。

你可以得到这样的东西。

[{"Value": 10}, {"Value": 20}, {"Value": 30}, {"Value": 40}];

这是一个对象数组,其中每个元素都是一个包含键值对的对象。