为什么数组在增加日期或递减日期不在javascript中排序?

时间:2015-11-13 15:06:55

标签: javascript jquery arrays

我正在尝试对对象数组进行排序。对象有date属性。我需要按升序或降序对数组进行排序。我试试这样

https://jsfiddle.net/rxaLutgn/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) {
                return a = key(a), b = key(b), reverse * ((a > b) - (b > a));
            }
        }

它没有按升序或降序对数组进行排序。

2 个答案:

答案 0 :(得分:3)

你的功能搞砸了,试试

print(sum_digit(67154))
> 23

您需要将日期字符串转换为日期以进行排序,您还需要更改返回代码。

工作fiddle

答案 1 :(得分:0)

如果您期望所有日期,该功能正常。查看您的数据有一些无效日期,如“ - ”

如果您无法修改数据或期望确定日期,那么您需要修改您的功能以执行此类操作(或以某种方式按照您的喜好处理它)

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

@void的所有道具都是他的回答。我刚刚更新,因为有一个重复的问题提出来,我没有代表对这个问题发表评论或者对这篇文章的@void的回答