【问题标题】:Sort JSON data when Looping Values循环值时对 JSON 数据进行排序
【发布时间】:2015-07-13 05:07:04
【问题描述】:

我正在使用 jquery 从本地 JSON 文件中检索数据, 然后循环遍历结果...

localjsonfile.json

{
  "CGYacList": [ 
    {
      "Reg": "ZJ920",
      "SqnMarks": 3,
      "TailCode": "QO-A",
      "Notes": "N/A"
    },
    {
      "Reg": "ZJ936",
      "SqnMarks": 7,
      "TailCode": "QO-C",
      "Notes": "N/A"
    },
    {
      "Reg": "ZJ936",
      "SqnMarks": 2,
      "TailCode": "QO-C",
      "Notes": "N/A"
    },
    {
      "Reg": "ZJ936",
      "SqnMarks": 92,
      "TailCode": "QO-C",
      "Notes": "N/A"
    },
    {
      "Reg": "ZJ936",
      "SqnMarks": 3,
      "TailCode": "QO-C",
      "Notes": "N/A"
    }
  ]
}

JQUERY 代码

$(document).ready(function() {

        $.ajax({
                url: "localjsonfile.json",
                dataType: "text",
                success: function(data) {

        var json = $.parseJSON(data);

        for (var i = 0; i < json.CGYacList.length; i++) {            

        alert(json.CGYacList[i].SqnMarks);

        }

我的问题是, 使用for (var i = 0; i &lt; json.CGYacList.length; i++) 时,是否有一种简单的方法可以对结果进行排序以按 ASC 顺序显示.SqnMarks

干杯

【问题讨论】:

标签: javascript jquery json parsing


【解决方案1】:

只需使用自定义排序器:

json.CGYacList.sort(function(a,b) {
  return a.SqnMarks - b.SqnMarks; //reverse it for DSC order
});

【讨论】:

  • 辛苦了,谢谢 Arvind
【解决方案2】:

创建一个数组,插入数组并在for循环后对数组进行排序:

var sqnMarksArr=[];
for (var i = 0; i < json.CGYacList.length; i++) {            
     sqnMarksArr.push(json.CGYacList[i].SqnMarks);
}
sqnMarks.sort();

【讨论】:

    【解决方案3】:

    这样就可以了。如果你想要相反的顺序翻转 -1 : 1。

    json.CGYacList.sort(function(a, b){
        return a.SqnMarks > b.SqnMarks? 1 : -1;
    });
    

    【讨论】:

    • (如果只是排序,则不需要 for 循环)
    【解决方案4】:

    您可以使用 javascript 排序功能或任何其他 Jquery 排序插件

    json.CGYacList.sort(function(a, b){
        return   a.SqnMarks>b.SqnMarks
    }
    

    这是一个基于任意元素对数组进行排序的函数

    var sort_by = function(field, reverse, primer){
    
       var key = primer ? 
           function(x) {return primer(x[field])} : 
           function(x) {return x[field]};
    
       reverse = !reverse ? 1 : -1;
    
       return function (a, b) {
           return a = key(a), b = key(b), reverse * ((a > b) - (b > a));
         } 
    }
    

    信用转到“Triptych

    【讨论】:

      【解决方案5】:

      对于 ASC 订单:

      json.CGYacList.sort(function(obj1,obj2){return   obj1.SqnMarks>obj2.SqnMarks});
      

      对于 DSC 订单:

       json.CGYacList.sort(function(obj1,obj2){return obj1.SqnMarks<obj2.SqnMarks});
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-06
        • 1970-01-01
        • 1970-01-01
        • 2014-06-13
        • 2020-12-15
        • 2011-09-30
        • 1970-01-01
        • 2014-08-21
        相关资源
        最近更新 更多