首页 > 解决方案 > 如何首先呈现搜索项目和所有匹配项目 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
}))

标签: javascriptreactjs

解决方案


一种简单的方法是考虑匹配的关键字的数量,然后将相关的关键字推到顶部,其余的推到最后。如果需要,您可以在下面尝试并添加其他验证。

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);


推荐阅读