jij*_*ijo 1 javascript sorting
我有一个像下面这样的字符串数组。
ABC
QRS
DEF
HIJ
TUV
KLM
NOP
Run Code Online (Sandbox Code Playgroud)
我需要按字母顺序在 javascript 中对这个数组进行排序,除了几个已知的值。即我需要 DEF 和 NOP 出现在前 2 个位置,并按字母顺序按升序对数组的其余部分进行排序。这是我按字母顺序对整个数组进行排序所写的内容,现在我需要前 2 个位置的 2 个值。
array.sort(function(a,b){return ((a < b) ? -1 : (a > b) ? 1 : 0)});
Run Code Online (Sandbox Code Playgroud)
预期结果。
DEF
NOP
ABC
HIJ
KLM
QRS
TUV
Run Code Online (Sandbox Code Playgroud)
数组的内容是动态的,所以如果数组有 DEF 或 NOP,那么它们应该在最上面,否则应该按字母顺序排序。解决这个问题的最佳方法是什么?
我认为最直接的方法是单独删除已知元素,而不是尝试将它们合并到排序中。这样,您也可以sort不使用比较功能。
function sortWithKnownPrefix(prefix, arr) {
// Get the non-prefix elements
var rest = arr.filter(function (item) {
return prefix.indexOf(item) === -1;
});
// Concatenate the prefix and the sorted non-prefix elements
return prefix.concat(rest.sort());
}
sortWithKnownPrefix(
["DEF", "NOP"],
["ABC", "QRS", "DEF", "HIJ", "TUV", "KLM", "NOP"]
)
// ["DEF", "NOP", "ABC", "HIJ", "KLM", "QRS", "TUV"]
Run Code Online (Sandbox Code Playgroud)