我有一个要根据createDate
排序的对象数组。
[{
"TestName": "com.DPProgram",
"Test": {
"createDate": "2018-02-15T17:17:10.000+0530",
"effectiveStartDate": "1900-01-01T00:00:00.000+0530",
"effectiveEndDate": "2200-01-01T00:00:00.000+0530"
}
}, {
"TestName": "com.DPProgram",
"Test": {
"createDate": "2018-02-22T15:00:11.000+0530",
"effectiveStartDate": "2017-12-22T00:00:00.000+0530",
"effectiveEndDate": "2018-12-23T00:00:00.000+0530"
}
}];
data = data.sort(function(a, b) {
data = data.sort(function(a, b) {
return (a[data.createDate] > b[data.createDate])
});
但是它没有排序
答案 0 :(得分:3)
您正在将日期作为字符串进行比较。在进行比较之前,您需要将它们转换为Date对象。
示例中的a[data.bean.createDate]
语法也被破坏。您需要访问obj.Test.createDate
。
最后,请勿使用alert()
进行调试,尤其是不要使用比字符串更复杂的数据类型。 console.log()
更为准确,因为它不强制数据类型,并允许您遍历级别或对象/数组。
话虽如此,请尝试以下操作:
var data = [{
"TestName": "com.DPProgram",
"Test": {
"createDate": "2018-02-15T17:17:10.000+0530",
"effectiveStartDate": "1900-01-01T00:00:00.000+0530",
"effectiveEndDate": "2200-01-01T00:00:00.000+0530"
}
}, {
"TestName": "com.callidus.quotaDP.Tests.DPProgram",
"Test": {
"createDate": "2018-02-22T15:00:11.000+0530",
"effectiveStartDate": "2017-12-22T00:00:00.000+0530",
"effectiveEndDate": "2018-12-23T00:00:00.000+0530"
}
}, {
"TestName": "com.Foo",
"Test": {
"createDate": "2018-02-07T15:00:11.000+0530",
"effectiveStartDate": "2017-12-22T00:00:00.000+0530",
"effectiveEndDate": "2018-12-23T00:00:00.000+0530"
}
}];
data = data.sort(function(a, b) {
var aDate = new Date(a.Test.createDate),
bDate = new Date(b.Test.createDate);
return aDate > bDate ? 1 : aDate < bDate ? -1 : 0;
});
console.log(data);
答案 1 :(得分:0)
var data = [{
"TestName": "com.DPProgram",
"Test": {
"createDate": "2018-02-15T17:17:10.000+0530",
"effectiveStartDate": "1900-01-01T00:00:00.000+0530",
"effectiveEndDate": "2200-01-01T00:00:00.000+0530"
}
}, {
"TestName": "com.DPProgram",
"Test": {
"createDate": "2018-02-22T15:00:11.000+0530",
"effectiveStartDate": "2017-12-22T00:00:00.000+0530",
"effectiveEndDate": "2018-12-23T00:00:00.000+0530"
}
},{
"TestName": "com.DPProgram",
"Test": {
"createDate": "2018-02-25T15:00:11.000+0530",
"effectiveStartDate": "2017-12-22T00:00:00.000+0530",
"effectiveEndDate": "2018-12-23T00:00:00.000+0530"
}
}];
console.log(_.sortBy(data, 'createDate'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore.js"></script>
答案 2 :(得分:0)
使用排序函数时,您将获得两个参数,它们是要操作的数据数组的元素,因此需要使用它们:
o/p