请帮忙!我在下面有以下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'
}]
答案 0 :(得分:0)
此链接可让您了解如何处理排序javascript对象。
答案 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;
答案 2 :(得分:0)
您无需使用jquery
来执行排序操作。您可以使用简单的Javascript
代码来克服。
(这是你需要阅读的the source)
此外,我已将代码添加到jsfiddle
此外,下面的代码段也可以运行。
注意:return (b.Date - a.Date)
将具有最大日期的对象中的对象排序到具有最小日期的对象。
return (a.Date - b.Date)
从小到大排序。
这适用于数组的所有元素(return a-b
和return 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)