我有一个数组,其中包含与此相似的人的名字(但更大):
let names = [
"John Brown",
"Tristan Black",
"Carl Jobbs",
"Aidan Burrows",
"Taylor Joe"
];
基于输入,我试图返回数组中最相关的结果。目前,我正在遍历名称数组,并像这样检查它们:
if(name.toLowerCase().includes(input.toLowerCase()))
{
console.log("Found match : " + name);
}
这显然不适合查找最相关的搜索结果,因为它会找到任何输入输入的名称。
理想情况下,我想做的是遍历名称数组并找到前5名(从某种意义上说,它们与输入最相似)。
我该怎么办?
答案 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))