簡體   English   中英

為什么數組未按遞增日期或遞減日期在javascript中排序?

[英]why array is not sorted in javascript in increasing date or decreasing date?

我正在嘗試對對象數組進行排序。對象具有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));
            }
        }

它未按升序或降序對數組排序。

您的功能搞砸了,嘗試

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

您需要將日期字符串轉換為日期以進行排序,還需要更改返回碼。

工作提琴

如果您希望所有的日期,該功能都可以正常工作。 查看您的數據,有一些無效的日期,例如“-”

如果您無法修改數據或總是期望有一個確定的日期,則需要修改函數以執行類似的操作(或按自己喜歡的方式進行處理)

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回答發表評論

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM