JS sort()为空结束

JS sort() empty to end

本文关键字:结束 sort JS      更新时间:2023-09-26

我有一个JS排序,如下所示:

records.sort(function(a, b) {
    if (a < b) return -1;
    if (a > b) return 1;
    return 0;
});

这是有效的,但我的一些记录是""null

空记录列在开头,但我希望它们在结尾。

我认为有比更好的方法

if (a == "") a = "zzzz";

但是我该怎么做呢?

也许是这样的:

records.sort(function(a, b) {
    if(a === "" || a === null) return 1;
    if(b === "" || b === null) return -1;
    if(a === b) return 0;
    return a < b ? -1 : 1;
});
records.sort((a,b) => a ? b ? a.localeCompare(b) : -1 : 1);

Eric Hotinger的答案

的ES6单行版本

较短路径:

['a', '!', 'z','Z', null, undefined, '']
.sort((a, b) => !a ? 1 : (!b ? -1 : (a.localeCompare(b))) )