有一个JSON节点,如下[{"a":1,"b":2,"c":1,"d":3,"e":2}]
。需要根据值而不是按降序排序。
预期输出[{"d":3,"e":2,"b":2,"c":1,"a":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;
尽管如此,依靠以特定方式订购的对象属性通常是不明智的。