首页 > 解决方案 > 通过对象值对 json 项进行排序

问题描述

如果我有下面的 JSON 并且我需要遍历数组中的每个对象并通过 num 键对它们进行排序并吐出名称值,我该怎么做呢?我有一个真正的大脑放屁,不记得了。

  [{
    "name": "bob",
    "num": 16
  },
  {
    "name": "mary",
    "num": 45
  },

  {
    "name": "tyler",
    "num": 3
  },
  {
    "name": "rebecca",
    "num": 70
  },
  {
    "name": "michelle",
    "num": 81
  }]

标签: javascriptjsonsorting

解决方案


如果您想按升序排序,可以使用sort带有自定义比较器的内置函数,然后map将结果存储到名称数组中:

var data = [{
    "name": "bob",
    "num": 16
  },
  {
    "name": "mary",
    "num": 45
  },

  {
    "name": "tyler",
    "num": 3
  },
  {
    "name": "rebecca",
    "num": 70
  },
  {
    "name": "michelle",
    "num": 81
  }
];

console.log(data.sort((a, b) => a.num - b.num).map(e => e.name));

用于b.num - a.num降序。


推荐阅读