gpt4 book ai didi

javascript - JS按三种排序方式对数组进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:39:13 24 4
gpt4 key购买 nike

我需要根据搜索词按以下顺序对数组进行排序。

  1. 准确的字符串。
  2. 开始于。
  3. 包含。

代码:

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"]

我不确定如何使用内置的排序函数来执行此操作,因为它看起来并不适合用于此类情况。有什么建议吗?

最佳答案

您需要一个返回分级排序值的函数。

在排序回调中,您需要返回反射(reflect)两个字符串之间关系的两个值的差值。

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);

关于javascript - JS按三种排序方式对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54236078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com