我有一个列表对象,我从Web服务加载,我的列表以这种形式出现:
list = { "name1 Surname1" , "name2" , "name3Surname3" , "surname4" }
你可以看到我有不同的格式:
用空格分隔名字 - 姓氏,仅名称,仅姓氏。
我的目的是按姓名或姓氏搜索会员;我的结果应该是其中一个名单成员。
例如:
总结:
我应该搜索项目:
我尝试过过滤器解决方案,如下所示:
findItems(name) {
this.splits = name.toLowerCase().split(' ');
if (this.splits.length >= 1) {
results = this.namesList.filter(item => this.splits.indexOf(item.brand.toLowerCase()) !== -1);
}else {
results = [];
}
}
但此解决方案仅搜索与我的搜索项目完全相对应的项目,并且缺少部分搜索
建议?
答案 0 :(得分:0)
您可以使用regex
和RegExp()
来完成此操作。请注意,这将返回所有匹配结果的array
:
let list = [ 'name1 Surname1' , 'name2' , 'name3Surname3' , 'surname4' ];
function findItems(name) {
return list.filter(item => {
const regex = new RegExp(name, 'gi');
return item.match(regex);
});
}
console.log(findItems('name1 s')); // outputs ["name1 Surname1"]
答案 1 :(得分:0)
如果您的名字在列表而不是对象中,这是一个简单的解决方案
list = [ "name1 Surname1" , "name2" , "name3Surname3" , "surname4" ]
function findItems(searchedName, nameList) {
return nameList.map((nameString) => {
if(nameString.includes(searchedName))
return nameString;
});
}
console.log(findItems("name", list))