如何在javascript中排序数组?

时间:2015-11-14 07:35:38

标签: javascript jquery arrays sorting

我正在尝试对存在对象中的日期的数组进行排序。我想使用sort函数对一个属性“akritiv__Promise_Date__c”进行排序。我还问了一个问题,它的答案是不工作属性 how to sort date object in array?。当我用它时它回答它不是我的场地

我进行ajax调用并从服务器存储中获取数据。但是数据 2000 ,因此很难检查数据是否排序。

所以我会告诉你数据不是排序的证据。

  • 查看对象 7 2014年7月24日星期四
  • 查看对象 10 2014年7月28日星期一
  • 查看对象 67 2015年4月20日星期一
  • 查看对象 69 2013年12月18日星期三

我想只对一个字段进行排序

这是我的代码 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);
        }
    }

1 个答案:

答案 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);
    });
});

工作小提琴:https://jsfiddle.net/rxaLutgn/16/