【问题标题】:how to sort date object in array? [duplicate]如何对数组中的日期对象进行排序? [复制]
【发布时间】:2015-11-14 02:25:33
【问题描述】:

我想对对象数组进行排序。我的对象中有日期我想对对象的日期进行排序

我用这个答案来解决我的问题 why array is not sorted in javascript in increasing date or decreasing date?

但是当使用这个解决方案时它不起作用。

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

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

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

关于这个问题的任何更新。下面的答案不起作用

【问题讨论】:

    标签: javascript jquery arrays sorting


    【解决方案1】:

    如果您期望所有日期,该函数可以正常工作。查看您的数据有一些无效日期,例如“-”

    如果您无法修改数据或始终期望有一个确定的日期,那么您需要修改您的函数以执行此类操作(或以您喜欢的方式处理它)

    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/

    【讨论】:

    • 它不工作请检查jsfiddle.net/rxaLutgn/12
    • 请提供任何小提琴
    • @user944513 如果您的小提琴已修复以添加回 key(a) and key(b) 调用,则它可以工作。
    • 正如@binki 指出的那样,有一个错误,我忘记将 key() 放回函数中。它现在应该可以工作了
    【解决方案2】:

    这是一个可行的解决方案,我没有像你那样包含底漆。但是实现起来应该很容易。

    $.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);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-20
      • 2013-10-26
      • 1970-01-01
      • 2015-02-25
      • 1970-01-01
      • 1970-01-01
      • 2020-05-18
      相关资源
      最近更新 更多