javascript - 按值降序对 json 进行排序

标签 javascript jquery json

已经得到一个JSON节点如下[{"a":1,"b":2,"c":1,"d":3,"e":2}] 。需要根据值而不是键按降序排序。

预期输出 [{"d":3,"e":2,"b":2,"c":1,"a":1}]

最佳答案

这需要几个辅助函数(或像 lodash 这样的库):

let toPairs = s => Object.keys(s).map(k => [k, s[k]]);
let fromPairs = a => a.reduce((s, [k, v]) => Object.assign(s, {[k]: v}), {});
let cmp = (a, b) => (a > b) - (a < b);

a = {"a": 1, "b": 2, "c": 1, "d": 3, "e": 2};
b = fromPairs(
    toPairs(a).sort((x, y) =>
        cmp(y[1], x[1]) || cmp(y[0], x[0])))

console.log(b);

也就是说,依赖以特定方式排序的对象属性通常是不明智的。

关于javascript - 按值降序对 json 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48126998/

相关文章:

javascript - 使用 Materialize CSS 和 Angular 进行导航栏搜索

javascript - jQuery empty() 与 remove()

java - Spring MVC -> JSON 响应

javascript - 清除 input[type=file] 值时,jQuery onChange 不会触发

javascript - 使用验证码验证联系表

javascript - 将鼠标悬停在 JavaScript 列表项上时如何创建暂停或延迟?

asp.net - 为什么此JSON返回为 "Invalid JSON primitive"?

javascript - Grails将参数从g:each发送到javascript

javascript - jQuery .click 在 if/else 语句中不起作用

javascript - 杀死 View ,全局事件总线。 Backbone