onSearch(e) { // 获取用户输入的搜索关键词 const keyword = e.target.value.trim() if (this.keyword === '') { this.searchResult = null; // 当搜索框为空时,将搜索结果置为 null this.isSearchEmpty = true; } else { // 根据关键词在门店数据中进行匹配 const searchResult = this.filteredStoresToShow.filter(store => { return ( store.name.includes(keyword) || store.address.includes(keyword) ) }) this.searchResult = searchResult this.isSearchEmpty = false; } },完善该方法的代码实现搜索关键字就行,不需要保证关键字的顺序
时间: 2024-03-02 17:53:22 浏览: 112
可以通过使用正则表达式匹配关键词,忽略顺序,来实现搜索功能。修改后的代码如下:
```
onSearch(e) {
// 获取用户输入的搜索关键词
const keyword = e.target.value.trim();
if (keyword === '') {
this.searchResult = null;
this.isSearchEmpty = true;
} else {
// 将关键词转换为正则表达式
const regex = new RegExp(keyword.split('').join('.*'), 'i');
// 根据正则表达式在门店数据中进行匹配
const searchResult = this.filteredStoresToShow.filter(store => {
return regex.test(store.name) || regex.test(store.address);
});
this.searchResult = searchResult;
this.isSearchEmpty = false;
}
},
```
这里使用了 `split` 方法将关键词转换为字符数组,然后再用 `join` 方法将字符数组转换为正则表达式的字符串,其中使用了 `.*` 表示匹配任意字符,忽略了关键词的顺序。最后使用 `RegExp` 构造函数将字符串转换为正则表达式,使用 `test` 方法匹配门店数据中的名称和地址,返回匹配的结果。
阅读全文