如何按字幕和标题过滤而不是一个?

问题描述 投票:0回答:2

目前我使用计算属性在我的网站上显示数据,我从它返回数组:

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

但现在它只搜索一个字幕数组。如何在标题和副标题中搜索它,然后从我的计算属性中返回数组?

javascript arrays vuejs2
2个回答
1
投票

您可以使用Array#some检查一个谓词中的副标题和标题:

let titleSearch = this.packages.filter(({ title, sub_title }) =>
  [title, sub_title].some(prop => prop.match(new RegExp(this.search, "i")))
);

这样做是采取titlesub_title属性并将它们放在数组中。如果字幕或标题与正则表达式匹配,则保留该项目。


0
投票

这是因为您只返回第二个数组。只需使用数组concat方法

return titleSearch.concat(subTitleSearch)

或者,如果要避免重复输入,可以执行以下操作

subTitleSearch = subTitleSearch.filter( s => titleSearch.indexOf(s) == -1);
return titleSearch.concat(subTitleSearch);
© www.soinside.com 2019 - 2024. All rights reserved.