在javascript中按值排序

Fab*_*llo 2 javascript arrays sorting

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

编辑

我的目的的解释:我有一个Map<myClass, Array<myClass>>,我想要从最短到最长的值(数组)的长度对这个地图进行排序.

geo*_*org 8

您不能直接对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>");
Run Code Online (Sandbox Code Playgroud)