nodejs通过未知键的数值desc对对象进行sorting?

当密钥未知时,如何通过值DESC来sorting这个对象?

var themen = {"Eisenbahn":2,"Technik":2,"Mathematik":3,"Automobil":4,"Physik":1,"Computer":2,"Ökonomie":1} 

编辑:

下面的代码生成一个适合我的需求的地图,遗憾的是它不能通过JSON.stringify()转换成json,而只是返回{}

 themen = new Map(Object.keys(themen).map(function(v) { return [v, themen[v]] }).sort(function(p,t) { return t[1] - p[1]; })); 

任何想法如何使其json和保持秩序?

对象没有顺序,将对象添加到对象的顺序是它们出现的顺序。

所以可以build立一个基于第一个对象,并添加你喜欢的顺序属性。

这工作:

 var orderThemen = function (themen) { var themens = Object.keys(themen) var order = {} var output = {} themens.forEach(function (key) { var auxThemen = themen[key] if (!order[auxThemen]) order[auxThemen] = [] order[auxThemen].push(key) }) Object.keys(order).forEach(function (key) { var level = order[key] level.forEach(function (themen) { output[themen] = key }) }) return output } 

很近 …

改变你的地图线

 themen = Object.keys(themen).map(function(v) { return [v, themen[v]] }).sort(function(p,t) { return t[1] - p[1]; }); 

new Map()创build一个Map对象,这是别的东西。

编辑:

除非你想要对象…

 var result = {} Object.keys(themen).map(function(v) { return [v, themen[v]] }).sort(function(p,t) { return t[1] - p[1]; }).forEach(function(v){ result[v[0]] = v[1]; }); console.log(result); // => sorted object