【问题标题】:sort json by value in descending order [duplicate]按值降序对json排序[重复]
【发布时间】:2018-01-06 11:42:54
【问题描述】:

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

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

【问题讨论】:

  • 对象属性本质上是无序的。
  • es2015有订单,但有例外。
  • @ankit:您标记的解决方案是基于键排序。需要按值排序
  • 您仍然无法根据其值对 JSON 对象的键进行排序。任何一种情况都是相同的@suhas。正确阅读

标签: javascript jquery json


【解决方案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);

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 2012-11-20
    • 2021-03-07
    • 2019-09-09
    相关资源
    最近更新 更多