Javascript JSON上的排序逻辑

Javascript JSON上的排序逻辑,javascript,jquery,html,Javascript,Jquery,Html,我想把我的名单分类。 我有这个JSON { "ships": [{ "Code": "s01", "Quantity": "10", "Desc": "Ship 1", "Date": "Jul 01 2016" },{ "Code": "s03", "Quantity": "4", "Desc": "Ship 2", "Date": "Jul 03

我想把我的名单分类。 我有这个JSON

{
    "ships": [{
        "Code": "s01",
        "Quantity": "10",
        "Desc": "Ship 1", 
        "Date": "Jul 01 2016"
    },{
        "Code": "s03",
        "Quantity": "4",
        "Desc": "Ship 2", 
        "Date": "Jul 03 2016"
    },{
        "Code": "s02",
        "Quantity": "2",
        "Desc": "Ship 4", 
        "Date": "Jul 02 2016"
    }]
}
如何按日期、代码或字母顺序排序

我可以使用jQuery。我试过这个密码

var element = ...; 
element.Sort();

它不起作用。

您只需要实现自己的
sort()
逻辑。试试这个:

data.ships.sort(function(a, b) {
    return a.Date < b.Date ? -1 : a.Date > b.Date ? 1 : 0;
});
data.ships.sort(函数a,b){
返回a.日期b.日期-1:0;
});

如果需要,可以更改已排序对象的属性。您甚至可以将其添加到函数中以保持代码干燥:

function sortByProperty(array, propName) {
    array.sort(function(a, b) {
        return a[propName] < b[propName] ? -1 : a[propName] > b[propName] ? 1 : 0;
    }); 
}

sortByProperty(data.ships, 'Code');
函数sortByProperty(数组,propName){
array.sort(函数(a,b){
返回a[propName]b[propName]?1:0;
}); 
}
sortByProperty(data.ships,'Code');

您只需要实现自己的
sort()
逻辑。试试这个:

data.ships.sort(function(a, b) {
    return a.Date < b.Date ? -1 : a.Date > b.Date ? 1 : 0;
});
data.ships.sort(函数a,b){
返回a.日期b.日期-1:0;
});

如果需要,可以更改已排序对象的属性。您甚至可以将其添加到函数中以保持代码干燥:

function sortByProperty(array, propName) {
    array.sort(function(a, b) {
        return a[propName] < b[propName] ? -1 : a[propName] > b[propName] ? 1 : 0;
    }); 
}

sortByProperty(data.ships, 'Code');
函数sortByProperty(数组,propName){
array.sort(函数(a,b){
返回a[propName]b[propName]?1:0;
}); 
}
sortByProperty(data.ships,'Code');
尝试使用以下功能:

function SortByName(x,y) {
  return ((x.Name == y.Name) ? 0 : ((x.Name > y.Name) ? 1 : -1 ));
}

// Call Sort By Name
arr.sort(SortByName);
试用功能:

function SortByName(x,y) {
  return ((x.Name == y.Name) ? 0 : ((x.Name > y.Name) ? 1 : -1 ));
}

// Call Sort By Name
arr.sort(SortByName);

仅使用Javascript:

function compare(a,b) {
  if (a.last_nom < b.last_nom)
    return -1;
  else if (a.last_nom > b.last_nom)
    return 1;
  else 
    return 0;
}

仅使用Javascript:

function compare(a,b) {
  if (a.last_nom < b.last_nom)
    return -1;
  else if (a.last_nom > b.last_nom)
    return 1;
  else 
    return 0;
}
获取如上所述的JSON数据。并编写具有特定列名的排序函数

 var sortColumnName = "Code";
 function SortByCode(x,y) {
  return ((x[sortColumnName]  == y[sortColumnName]) ? 0 : ((x[sortColumnName]>    y[sortColumnName]) ? 1 : -1 ));
}
 arr.sort(SortByCode);
排序后,打印排序后的JSON数组

 document.write("<br/><b>After Sorting </b> <br/>");   
for(var n=0;n<arr.length;n++){
  document.write(arr[n].Code + ' ' + arr[n].Quantity + ' ' + arr[n].Desc + '<br>');
}
document.write(
排序后
); 对于(var n=0;n 获取如上所述的JSON数据,并编写具有特定列名的排序函数

 var sortColumnName = "Code";
 function SortByCode(x,y) {
  return ((x[sortColumnName]  == y[sortColumnName]) ? 0 : ((x[sortColumnName]>    y[sortColumnName]) ? 1 : -1 ));
}
 arr.sort(SortByCode);
排序后,打印排序后的JSON数组

 document.write("<br/><b>After Sorting </b> <br/>");   
for(var n=0;n<arr.length;n++){
  document.write(arr[n].Code + ' ' + arr[n].Quantity + ' ' + arr[n].Desc + '<br>');
}
document.write(
排序后
); 对于(var n=0;n使用下划线!

使用下划线!


您能解释sort参数中的函数吗?
sort()
在数组中一次迭代比较两个值。根据值的比较,您可以返回
-1
0
1
。有关更多信息,请参阅MDN:您能解释sort参数中的函数吗?
sort()
遍历数组,一次比较两个值。根据值的比较返回
-1
0
1
。有关详细信息,请参阅MDN: