【问题标题】:How to sort JSON by id's values newest to oldest如何按 id 的值从最新到最旧对 JSON 进行排序
【发布时间】:2016-09-10 03:28:53
【问题描述】:

如何按 ID 的值从最新到最旧对 JSON 进行排序?

HTML:

<script>
 $(document).ready(function() {
    var url = "json.php";
        $.getJSON(url, function(result) {
        console.log(result);
        $.each(result, function(i, field) {
           var id = field.id;
           var name = field.name;
           var category = field.category;
             $("#show_data").append("<li class='item'>"+"<div>"+ id +"</div>"+  "<p>"+  name +"</p>" +"<p>" +  category +"</p></li>");
        });
    });
});</script><body><ul><div id="show_data"></div><ul>

Json.php:

[{
    "id": "1",
    "name": "Mary",
    "category": "eng"
}, {
    "id": "2",
    "name": "Peter",
    "category": "super"
}, {
    "id": "3",
    "name": "Ben",
    "category": "math"
}]

结果:

id:1
name:Mary
category:eng

id:2
name:Peter
category:super

id:3
name:Ben
category:math

我希望结果是:

id:3
name:Ben
category:math

id:2
name:Peter
category:super
id:1

name:Mary
category:eng

id:3 --> id-->2 id:--1

【问题讨论】:

  • 您无法对 JSON 进行排序,您需要先将其设为 javascript 对象 - 但我猜 getJSON 会为您做到这一点
  • 你的意思是按id降序排序吗?
  • 这是Array#sort 的一些文档 - 您需要实现compareFunction

标签: javascript arrays json sorting


【解决方案1】:

在操作 dom 之前按id 的降序对result 进行排序

var sortedResult = result.sort(function(a, b) {
  return b.id - a.id
})
$.each(sortedResult, function(i, field) {
  // Rest of the code
});

【讨论】:

    【解决方案2】:

    如果您只是希望它以相反的顺序显示,您可以使用$("show_data").prepend(data)。这将在 div 的顶部插入要添加的最后一个数据,并在底部插入第一个数据。

    【讨论】:

      猜你喜欢
      • 2016-07-14
      • 2021-04-30
      • 2014-10-18
      • 2021-09-03
      • 1970-01-01
      • 2018-04-13
      • 2020-01-29
      • 2013-04-06
      • 2012-07-14
      相关资源
      最近更新 更多