我需要根据搜索词按以下顺序对数组进行排序。
- 完全匹配的字符串。
- 以...开头的字符串。
- 包含的字符串。
代码:
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);
["Hello", "Hell", "Something here Hello"]
我不确定如何使用内置的排序函数来完成这个任务,因为它似乎不适用于这种情况。请问有什么建议吗?
a
和b
。你当前的算法对于数组中的所有元素只返回-1
或0
。 - str-1
、0
和1
。现在您只返回两个值中的一个 - 两个对象相等或较小。从功能上讲,与返回布尔值相同,因为您仍然只有两种结果。 - VLAZ