Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对字符串列表进行排序,并优先选择距离起始索引更近的字符串_Javascript_String_Sorting - Fatal编程技术网

Javascript 对字符串列表进行排序,并优先选择距离起始索引更近的字符串

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', 我想得到的搜索结果优

创建在键入时显示结果的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',
我想得到的搜索结果优先考虑的结果,这是更接近开始索引


如何解决此问题?

根据要在数组项中查找的字符串的
索引中的差异进行排序:

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谈论的是搜索。