我正在尝试对存在对象中的日期的数组进行排序。我想使用sort函数对一个属性“akritiv__Promise_Date__c”进行排序。我还问了一个问题,它的答案是不工作属性 how to sort date object in array?。当我用它时它回答它不是我的场地
我进行ajax调用并从服务器存储中获取数据。但是数据 2000 ,因此很难检查数据是否排序。
所以我会告诉你数据不是排序的证据。
我想只对一个字段进行排序
这是我的代码 https://jsfiddle.net/rxaLutgn/14/
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(a)=='Invalid Date'?0:new Date(a);
b = new Date(b)=='Invalid Date'?0:new Date(b);
return reverse * (a-b);
}
}
答案 0 :(得分:1)
这是一个更简单的功能来实现同样的目标:
$.ajax({
url: "https://dl.dropboxusercontent.com/s/3v7ya481187k8gf/a.json?dl=0",
}).done(function (data) {
var arr;
arr = JSON.parse(data);
arr.sort(function (a, b) {
var _a = a.akritiv__Promise_Date__c;
var _b = b.akritiv__Promise_Date__c;
if (_a == "-") _a = 0;
if (_b == "-") _b = 0;
return new Date(_a) - new Date(_b); // Ascending order
// to reverse do return new Date(_b) - new Date(_a);
});
// Verify using printing the dates
[].forEach.call(arr, function (ins) {
console.log(ins.akritiv__Promise_Date__c);
});
});