【问题标题】:how sort works in array in javascript? [duplicate]javascript中的数组如何排序? [复制]
【发布时间】:2015-11-14 07:35:38
【问题描述】:

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

我做了一个ajax调用并从服务器存储的数组中获取数据。但是数据是2000,所以很难检查数据是否排序。

所以我会给你证据证明数据不是排序的。

  • 查看对象 7 的值为 2014 年 7 月 24 日星期四
  • 查看对象 10 的值为 2014 年 7 月 28 日星期一
  • 查看对象 67 的值为 Mon Apr 20 2015
  • 查看对象 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);
        }
    }

【问题讨论】:

  • 你昨天问了类似的问题吗?
  • 为什么不在服务器端排序呢?
  • 是的,我昨天问过这个问题,但它的解决方案不起作用
  • 你为什么要把函数弄得这么复杂,如果你想排序你可以写一个简单得多的函数。
  • 如何..你能帮我如何排序这个属性..请提供小提琴

标签: javascript jquery arrays sorting


【解决方案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/

【讨论】:

  • 谢谢它是正确的答案......如果我想改变顺序然后我反转数组或者有没有其他更好的方法......!1
  • 老兄,我在评论中提到过..// to reverse do return new Date(_b) - new Date(_a);..
猜你喜欢
  • 2021-03-03
  • 1970-01-01
  • 2015-01-24
  • 2012-08-15
  • 1970-01-01
  • 2012-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多