0

I'm using jquery to retrieve data from a local JSON file, and then looping through the results...

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 CODE

$(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);

        }

My question is, When using for (var i = 0; i < json.CGYacList.length; i++) is there a simple way of sorting the results to show .SqnMarks in ASC order?

Cheers

5 Answers5

0

Create an array, insert into the array and sort the array after the for loop:

var sqnMarksArr=[];
for (var i = 0; i < json.CGYacList.length; i++) {            
     sqnMarksArr.push(json.CGYacList[i].SqnMarks);
}
sqnMarks.sort();
Norbert
  • 6,026
  • 3
  • 17
  • 40
0

This will do the trick. If you want the reverse order flip the -1 : 1.

json.CGYacList.sort(function(a, b){
    return a.SqnMarks > b.SqnMarks? 1 : -1;
});
Ryan Neuffer
  • 782
  • 4
  • 8
0

For ASC order :

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

For DSC order :

 json.CGYacList.sort(function(obj1,obj2){return obj1.SqnMarks<obj2.SqnMarks});
Suraj Ahirrao
  • 182
  • 10
0

Simply go for custom sorter:

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

You can use javascript sort function or any other Jquery Sorting plugin

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

Here's a function to sort the array based on any element

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));
     } 
}

Credit Goes to "Triptych"

Community
  • 1
  • 1
blue
  • 932
  • 7
  • 9