javascript - 如何首先呈现搜索项目和所有匹配项目 JavaScript?
问题描述
我需要在顶部渲染 John Daniel,然后还要渲染其他匹配的单词
let searchPerson = "John Daniel"
Person = [
"Harry Daniel",
"John Daniel",
"Michael Jackson",
"Anup Jackson",
]
let mySearch = searchPerson.toLowerCase().split(' ')
console.log(Person.filter(string => {
let containsAtLeastOneWord = false;
mySearch.forEach(word => {
if (string.toLowerCase().includes(word))
containsAtLeastOneWord = true;
})
if (containsAtLeastOneWord)
return string
}))
解决方案
一种简单的方法是考虑匹配的关键字的数量,然后将相关的关键字推到顶部,其余的推到最后。如果需要,您可以在下面尝试并添加其他验证。
let searchPerson = "John Daniel"
Person = [
"Harry Daniel",
"John Daniel",
"Michael Jackson",
"Anup Jackson",
]
let mySearch = searchPerson.toLowerCase().split(' ');
let list = new Array();
let temp = 0;
Person.forEach(name => {
temp = 0;
mySearch.forEach(word => {
if (name.toLowerCase().indexOf(word) >= 0)
temp++;
})
if ( temp > 1 )
list.unshift(name); //Push to the top
else if ( temp == 1 )
list.push(name);
});
console.log("List: " + list);
推荐阅读
- stm32 - Modbus 模式下缺少 STM32CubeMX UART 设置
- python - Pygame 不能随着时间的推移使图像变大
- numpy - 数组numpy总和的优化方法
- c# - MVVMLight 没有将 ViewLocator 和 ViewModel 添加到我的 WPF 项目中
- typescript - Typescript中泛型类型的非空断言运算符
- algorithm - 与 kmp 算法混淆
- react-native - 反应原生如何将recyclerlistview居中?
- css - 结合 font-face Src
- python - RawPy:如何获取线性原始数据 - 偏移校正(黑电平、白电平)、白平衡和去马赛克
- flutter - 如何在一行中添加空间(Flutter)?