目前我使用的是计算属性在我的网站上显示数据,我将从中返回数组:
filteredPackages: function () {
let titleSearch = this.packages.filter((mypackage, index, arr) => {
return mypackage.title.match(new RegExp(this.search, "i"))
});
return titleSearch;
}
目前,它只搜索title
属性中的搜索字符串,但我希望以搜索title
和sub_title
的方式实现它
filteredPackages: function () {
let titleSearch = this.packages.filter((mypackage, index, arr) => {
return mypackage.title.match(new RegExp(this.search, "i"))
});
let subTitleSearch = this.packages.filter((mypackage, index, arr) => {
return mypackage.sub_title.match(new RegExp(this.search, "i"))
});
return subTitleSearch;
}
但现在它只搜索一个字幕数组。如何在标题和副标题中搜索它,然后从我的计算属性中返回数组?
答案 0 :(得分:1)
您可以使用Array#some
:
let titleSearch = this.packages.filter(({ title, sub_title }) =>
[title, sub_title].some(prop => prop.match(new RegExp(this.search, "i")))
);
这样做是将title
和sub_title
属性放在数组中。如果字幕或标题与正则表达式匹配,则保留该项目。
答案 1 :(得分:0)
这是因为您只返回第二个数组。只需使用数组concat
方法
return titleSearch.concat(subTitleSearch)
或者,如果您想避免重复输入,可以执行以下操作
subTitleSearch = subTitleSearch.filter( s => titleSearch.indexOf(s) == -1);
return titleSearch.concat(subTitleSearch);