【发布时间】:2017-11-21 09:05:06
【问题描述】:
我有一个从 Web 服务加载的列表对象。我的清单以这种形式出现:
list = [ {id:"name1 Surname1" , nb:120} ,
{id:"name2", nb:632} ,
{id:"name3Surname3", nb:102} ,
{id:"surname4", nb:896}
]
我的搜索策略是按“id”。 如您所见,我有不同的格式:
用空格分隔的名字-姓氏,只有名字,只有姓氏。
我的目的是通过 id(其姓名或姓氏值)搜索成员。 我的结果应该是其 IDS 包含我的搜索值项目的项目。
例如:
- 如果我搜索:“name1”-> 结果:name1 Surname1
- 如果我搜索:“name1 Surn”-> 结果:name1 Surname1
- 如果我搜索:“name1 SurAAA”-> 结果:(无)
- 如果我搜索:“AAAA Surname1”-> 结果:(无)
- 如果我搜索:“name1Surname1”-> 结果:(无)
- 如果我搜索:“姓名”-> 结果:name1 Surname1,name2,name3Surname3,surname4
总结一下:
我应该搜索项目:
- 对应我搜索的项目
- 从我搜索的项目开始
我已经尝试过 filter 解决方案,如下所示:
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 = [];
}
}
但此解决方案仅搜索与我搜索的项目完全对应的项目,并且缺少部分搜索。
【问题讨论】:
标签: javascript regex angular typescript