通过比较两个对象对json数据进行排序

时间:2017-03-28 05:56:16

标签: jquery json

请帮忙!我在下面有以下json数据,我想使用jquery比较对象的日期和请求,并返回最近日期和最新请求的数据。

JSON:

[Object{
 'Date': '3/27/2017',
 'Item': '100',
 'Request': '2'
},
Object{
 'Date': '3/28/2017',
 'Item': '100',
 'Request': '1'
},
Object{
 'Date': '3/27/2017',
 'Item': '100',
 'Request': '1'
},
Object{
 'Date': '3/28/2017',
 'Item': '100',
 'Request': '2'
}]

所以预期的结果是:

[Object{
 'Date': '3/28/2017',
 'Item': '100',
 'Request': '2'
 },
 Object{
 'Date': '3/28/2017',
 'Item': '100',
 'Request': '1'
 },
 Object{
 'Date': '3/27/2017',
 'Item': '100',
 'Request': '2'
 },
Object{
'Date': '3/27/2017',
'Item': '100',
'Request': '1'
}]

3 个答案:

答案 0 :(得分:0)

此链接可让您了解如何处理排序javascript对象。

Sort Json object in javascript

Simple function to sort an array of objects

答案 1 :(得分:0)

试试这个,



var json = [{
    'Date': '3/27/2017',
    'Item': '100',
    'Request': '2'
  },
  {
    'Date': '3/28/2017',
    'Item': '100',
    'Request': '1'
  },
  {
    'Date': '3/27/2017',
    'Item': '100',
    'Request': '1'
  },
  {
    'Date': '3/28/2017',
    'Item': '100',
    'Request': '2'
  }
];

// sort function callback
function sort_obj(a, b) {
  return (new Date(b.Date) > new Date(a.Date) ||
            b.Request > a.Request) ? 1 : -1;
}
var output = [];
output.push($(json).sort(sort_obj));
console.log(output);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您无需使用jquery来执行排序操作。您可以使用简单的Javascript代码来克服。

(这是你需要阅读的the source

此外,我已将代码添加到jsfiddle

此外,下面的代码段也可以运行。

注意:return (b.Date - a.Date)将具有最大日期的对象中的对象排序到具有最小日期的对象。
return (a.Date - b.Date)从小到大排序。
这适用于数组的所有元素(return a-breturn b-a

祝你好运!

let array = [{
 'Date': '3/27/2017',
 'Item': '100',
 'Request': '2'
},
{
 'Date': '3/28/2017',
 'Item': '100',
 'Request': '1'
},
{
 'Date': '3/27/2017',
 'Item': '100',
 'Request': '1'
},
{
 'Date': '3/28/2017',
 'Item': '100',
 'Request': '2'
}]

array.sort(compare)

function compare (a, b) {
	return (new Date(b.Date) - new Date(a.Date))
}

console.log(array)