NodeJS使用未知键按数值desc对对象进行排序
nodejs sort object by numeric value desc with unknown keys?
当键未知时,如何按值 DESC 对此对象进行排序?
var themen = {"Eisenbahn":2,"Technik":2,"Mathematik":3,"Automobil":4,"Physik":1,"Computer":2,"Ökonomie":1}
编辑:
以下代码生成一个适合我要求的 Map,不幸的是它无法通过 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 并保持顺序?
对象没有顺序,向对象添加属性的顺序就是它们出现的顺序。
因此可以基于第一个对象构建一个对象,并按照您喜欢的顺序添加属性。
这有效:
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()
创建一个 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
相关文章:
- 引用对象中的通用值
- jQuery匹配JSON对象的部分文本
- 节点导出返回一个空对象
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 全局变量和全局对象的属性之间有什么区别吗
- 比较从函数和生成的日期对象
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 调整窗口大小时,可拖动的对象会出现在容器外部
- 如何使用javascript从主svg对象动态创建svg视图框
- 如何使用json将对象列表从java转换为javascript
- 序列化数据属性中对象的最可靠方法
- 如何访问声音管理器2创建的声音对象
- FabricJs-限制主对象内添加对象的移动区域
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 值对象在某个变量发生更改后发生更改
- 如何为json对象中的段发送array[]
- NodeJS使用未知键按数值desc对对象进行排序