JavaScript:异常排序

sol*_*ald 3 javascript

假设我有一个对象数组(为了更简单的显示目的,我将它显示为一个数组)

[ 'TEST', 'NEW', 'ALPHA', 'ZOO', 'WHATEVER' ]

我需要按字母顺序对它进行排序(简单的部分),但是,我需要以某种方式对其进行排序,某个单词,可以说NEW会出现在最后。

[ 'ALPHA', 'TEST', 'WHATEVER', 'ZOO', 'NEW' ]

这是我排序的功能

var sortedWords = function(a, b) {
    return a.word > b.word ? 1 : -1 ;
};
Run Code Online (Sandbox Code Playgroud)

所以,我得到 sortedWords 数组,然后再次检查它,创建另一个数组并将单词推入新数组,除非单词等于NEW。在这种情况下,我将它放在一边并在返回它之前附加到这个新数组的最后。必须有一种更好、更有效的方法来做到这一点。

谢谢你。

Chr*_*ung 5

更改您的比较器以NEW首先查找:

function (a, b) {
    if ((a.word === 'NEW') != (b.word === 'NEW')) {
        return a.word === 'NEW' ? 1 : -1;
    }
    return a.word > b.word ? 1 :
           a.word < b.word ? -1 : 0;
}
Run Code Online (Sandbox Code Playgroud)