und*_*ned 3 javascript sorting
我需要根据搜索词按以下顺序对数组进行排序.
代码:
var arr = ['Something here Hello', 'Hell', 'Hello'];
var term = 'Hello';
var sorted = arr.slice().sort((a, b) => {
let value = 0;
if (a.startsWith(term)) {
value = -1;
}
if (a.indexOf(term) > -1) {
value = -1;
}
if (a === term) {
value = -1;
}
return value;
});
console.log(sorted);Run Code Online (Sandbox Code Playgroud)
预期的结果是:
["Hello", "Hell", "Something here Hello"]
Run Code Online (Sandbox Code Playgroud)
我不确定如何使用内置的排序功能来执行此操作,因为它看起来并不适合与此类情况一起使用.请问有什么建议吗?
您需要一个为分阶段排序返回值的函数.
在排序回调内部,您需要返回反映两个字符串之间关系的两个值的增量.
const compareWith = term => string => {
if (string === term) return 1;
if (term.startsWith(string)) return 2; // switch string and term
if (string.includes(term)) return 3; // use includes
return Infinity; // unknown strings move to the end
};
var array = ['Something here Hello', 'Hell', 'Hello'],
term = 'Hello',
order = compareWith(term);
array.sort((a, b) => order(a) - order(b));
console.log(array);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
164 次 |
| 最近记录: |