Javascript:从子字符串中查找数组中最相关的字符串

时间:2018-12-04 21:43:33

标签: javascript arrays search

我有一个数组,其中包含与此相似的人的名字(但更大):

let names = [
   "John Brown", 
   "Tristan Black", 
   "Carl Jobbs", 
   "Aidan Burrows", 
   "Taylor Joe"
];

基于输入,我试图返回数组中最相关的结果。目前,我正在遍历名称数组,并像这样检查它们:

if(name.toLowerCase().includes(input.toLowerCase()))
{
    console.log("Found match : " + name);
}

这显然不适合查找最相关的搜索结果,因为它会找到任何输入输入的名称。

理想情况下,我想做的是遍历名称数组并找到前5名(从某种意义上说,它们与输入最相似)。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,那么此功能应该可以满足您的需求:

function filterByName(input, nameArray) {
  
  return nameArray.filter(name => (name.toLowerCase().includes(input.toLowerCase())))
}

let names = ["John Brown", "Tristan Black", "Carl Jobbs", "Aidan Burrows", "Taylor Joe"];

console.log('Found for Aid:', filterByName('Aid', names))
console.log('Found for Burr:', filterByName('Burr', names))
console.log('Found for Jo:', filterByName('Jo', names))