【问题标题】:Sort JSON by value [duplicate]按值对 JSON 进行排序 [重复]
【发布时间】:2016-06-05 04:50:17
【问题描述】:

如何按名称排序我的 json 文件 -> 值?我想按标签名称的 asc 值显示。知道如何转换我的 json 文件吗?

这是我的 JSON 文件的外观:

[{
    "id": "105",
    "name": "FIAT",
    "active": true,
    "parentId": "1"
}, {
    "id": "106",
    "name": "AUDI",
    "active": true,
    "parentId": "1"
}, {
    "id": "107",
    "name": "BMW",
    "active": true,
    "parentId": "1"
}, {
    "id": "109",
    "name": "RENAULT",
    "active": true,
    "parentId": "1"
}]

如果有人帮助我,我将不胜感激。提前致谢。

【问题讨论】:

  • 你是在客户端还是服务器端排序?
  • 您使用的是 PHP 还是 JavaScript?
  • 您应该提供更多信息;如前所述,我们需要知道您想在 Php 或 js 中执行此操作(例如,如果您想在客户端执行此操作,您甚至不必更改 JSON,只需在 js 上使用 _ 对数组进行排序。排序())
  • 您是要按name 的值对整个对象数组进行排序,还是要对每个单独的对象进行排序,以便键按字母顺序显示?

标签: javascript php jquery json sorting


【解决方案1】:

我建议使用Array#sort()

var data = [
    { "id": "105", "name": "FIAT",    "active": true, "parentId": "1" },
    { "id": "106", "name": "AUDI",    "active": true, "parentId": "1" },
    { "id": "107", "name": "BMW",     "active": true, "parentId": "1" },
    { "id": "109", "name": "RENAULT", "active": true, "parentId": "1" }
];

data.sort(function (a, b) {
    return a.name.localeCompare(b.name);
});

document.write('<pre>' + JSON.stringify(data, 0, 4) + '</pre>');

【讨论】:

  • localeCompare 支持是否足够广泛?
  • @Matthijs,你说的extensive是什么意思?
  • 我说的是浏览器支持。原来 Safari 不支持您描述的区域设置比较;因此,如果您以此为目标,则需要另一种类型的比较。
  • 是的,没错。 a.name - b.name
【解决方案2】:

非常直接。

var data = [
  { "id": "105", "name": "FIAT",    "active": true, "parentId": "1" },
  { "id": "106", "name": "AUDI",    "active": true, "parentId": "1" },
  { "id": "107", "name": "BMW",     "active": true, "parentId": "1" },
  { "id": "109", "name": "RENAULT", "active": true, "parentId": "1" }
];

data.sort(function(a, b) {
  return a.name > b.name;
});

console.log(data);

【讨论】:

  • 你实际上是调用了2次data.sort(),第二次调用是多余的
  • 我们不能用return a.name - b.name代替return a.name &gt; b.name;
猜你喜欢
  • 1970-01-01
  • 2018-02-18
  • 2010-10-27
  • 2011-12-28
  • 2014-07-09
  • 2012-01-17
  • 1970-01-01
  • 2013-07-26
  • 2023-04-06
相关资源
最近更新 更多