Javascript 对字符串列表进行排序,并优先选择距离起始索引更近的字符串
创建在键入时显示结果的web组件。目前我有如下字符串列表:Javascript 对字符串列表进行排序,并优先选择距离起始索引更近的字符串,javascript,string,sorting,Javascript,String,Sorting,创建在键入时显示结果的web组件。目前我有如下字符串列表: [ 'Aaeaca Bi', 'Aegaca Bd', 'Biah gi', 'dBciag ch', 'Ghiad dl', ] 要在用户键入“B”时进行搜索,当前我获得的结果如下: 'Aaeaca Bi', 'Aegaca Bd', 'Biah gi', 'dBciag ch' 但我想: 'Biah gi', 'dBciag ch', 'Aegaca Bd', 'Aaeaca Bi', 我想得到的搜索结果优
[
'Aaeaca Bi',
'Aegaca Bd',
'Biah gi',
'dBciag ch',
'Ghiad dl',
]
要在用户键入“B”时进行搜索,当前我获得的结果如下:
'Aaeaca Bi',
'Aegaca Bd',
'Biah gi',
'dBciag ch'
但我想:
'Biah gi',
'dBciag ch',
'Aegaca Bd',
'Aaeaca Bi',
我想得到的搜索结果优先考虑的结果,这是更接近开始索引
如何解决此问题?根据要在数组项中查找的字符串的
索引中的差异进行排序:
const arr=[
“Aaeaca Bi”,
“Aegaca Bd”,
“比亚吉”,
“dBciag ch”,
“Ghiad dl”,
“xxxx”,
];
常量strofind='B';
const result=arr
.filter(str=>str.includes(strToFind))
.sort((a,b)=>a.indexOf(strToFind)-b.indexOf(strToFind))
控制台日志(结果)代码>按什么对列表进行排序?你试过什么?您是否考虑过在每次输入新字符时创建一个新列表并对其进行排序?您只需要按照每个结果字符串中的“B”索引对结果进行排序。filter
创建一个新数组。所以不需要slice
Oops,你是对的。我最初使用的是排序
,因此我确保了切片
,然后意识到我也需要过滤
,但没有删除切片
。@如果将其设置为不区分大小写,性能肯定会很好,因为OP谈论的是搜索。