如何按值递增排序对象的映射

时间:2018-04-03 08:44:23

标签: javascript node.js

我在代码部分发布了下面的地图。我想要实现的是,根据值递增地对地图进行排序。所以,在排序后, 我应该按照上一节所示对地图进行排序。

请让我知道如何实现这一目标。

const obj1 = new Object();
const obj2 = new Object();
const obj3 = new Object();
const obj4 = new Object();

const map2 = {};
map2[obj1] = 10;
map2[obj2] = -20;
map2[obj3] = 0;
map2[obj4] = 40;
排序后

map2[obj2] = -20;
map2[obj3] = 0;
map2[obj1] = 10;
map2[obj4] = 40;

2 个答案:

答案 0 :(得分:2)

您没有显示map2变量是什么,但这可以通过使用本机数组方法轻松处理,主要是sort

var map2 = new Map();
var obj1 = new Object();
var obj2 = new Object();
var obj3 = new Object();
var obj4 = new Object();
var map = [{
      obj: obj1,
      value: 10
    },
    {
      obj: obj2,
      value: -20
    },
    {
      obj: obj3,
      value: 0
    },
    {
      obj: obj4,
      value: 40
    },
  ]
  .sort(function(a, b) {
    return a.value - b.value;
  });
console.log(map);

答案 1 :(得分:1)

如果map2是真实的Map,则它就像:

一样简单
 map2 = new Map([...map2.entries()].sort((a, b) => a.value - b.value));