如何对数组中的日期对象进行排序?
问题描述:
我想排序objects.I的阵列有我的目标日期,我想对象如何对数组中的日期对象进行排序?
我用这个答案来解决我的问题 why array is not sorted in javascript in increasing date or decreasing date?
日期排序,但是,当使用该解决方案也行不通。
我做了一个ajax调用,并从服务器存储中获取数据。但是数据是所以很难检查数据是否排序。
所以我会给你证据表明数据不是排序的。
- 见对象值为星期四2014年7月24日
- 见对象值为星期一2014年7月28日
- 见对象值为周一2015年4月20日
- 查看对象 value is 周三2013年12月18日
https://jsfiddle.net/rxaLutgn/6/
function sort_by(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) {
a = new Date(key(a)), b = new Date(key(b));
return reverse * (a-b);
}
}
对此question.Below回答不工作
答
如果你期待的所有日期的功能工作正常的任何更新。看看你的数据有一些无效的日期,如“ - ”
如果你不能修改数据或总是期待一个确定的日期,那么你需要修改你的函数来做这样的事情(或以某种方式处理它根据自己的喜好)
function sort_by(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) {
a = new Date(key(a))=='Invalid Date'?0:new Date(key(a));
b = new Date(key(b))=='Invalid Date'?0:new Date(key(b));
return reverse * (a-b);
}
}
https://jsfiddle.net/rxaLutgn/21/ < - 以这里看看在被严重排序的对象的插件来限制数据量
答
这里是一个可行的解决方案,我不包括底漆像你一样。但实施它应该很容易。
$.ajax({
url: "https://dl.dropboxusercontent.com/s/3v7ya481187k8gf/a.json?dl=0",
}).done(function(data) {
var arr;
var _key = "Expected_Payment_Date__c";//"akritiv__Promise_Date__c",
var _reverse = true;
arr=JSON.parse(data);
arr.sort(function(a,b){
var keyA = Date.parse(a[_key]);
var keyB = Date.parse(b[_key]);
var _rev = _reverse ? -1 : 1;
if(keyA < keyB) return _rev * -1;
if(keyA > keyB) return _rev * 1;
return 0;
});
console.log(arr);
});
它不工作请https://jsfiddle.net/rxaLutgn/12/ – user944513
请提供任何小提琴 – user944513
@ user944513如果你的小提琴被固定在['键加回(一)'和'key(b)'](https://jsfiddle.net/rxaLutgn/20/)称它有效。 – binki