按值降序排序json

时间:2018-01-06 11:42:54

标签: javascript jquery json

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

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

1 个答案:

答案 0 :(得分:3)

这需要一些辅助函数(或像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);
&#13;
&#13;
&#13;

尽管如此,依靠以特定方式订购的对象属性通常是不明智的。