按javascript中的值对Map进行排序

sort Map by value in javascript

本文关键字:Map 排序 javascript      更新时间:2023-09-26

我正在寻找一种在javascript中按值对Map进行排序的简单方法。我在这里找到了函数Object.keys(myMap),但它返回了一个字符串数组。在我的例子中,键不是字符串,而是复杂的对象,那么结果就不是很好(数组是空的…)。你知道另一种方法吗?

编辑

解释我的目的:我有一个Map<myClass, Array<myClass>>,我想根据值(数组)的长度对这个映射进行排序,从最短到最长。

您不能直接对Map进行排序,但可以将其转换为数组,对其进行排序并创建新的Map:

m = new Map()
m.set({x:1}, [1,2,3]);
m.set({x:2}, [1,2,3,4]);
m.set({x:3}, [1,2]);
m.set({x:4}, [1,2,3,4,5]);
m.set({x:5}, [1]);
// can also use Array.from polyfill here
a = [];
for(var x of m) 
  a.push(x);
a.sort(function(x, y) {
  return x[1].length - y[1].length;
});  
  
sorted = new Map(a);
for(var x of sorted) 
     document.write(JSON.stringify(x) + "<br>");