Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过字幕和标题而不是一个来过滤?_Javascript_Arrays_Vuejs2 - Fatal编程技术网

Javascript 如何通过字幕和标题而不是一个来过滤?

Javascript 如何通过字幕和标题而不是一个来过滤?,javascript,arrays,vuejs2,Javascript,Arrays,Vuejs2,目前,我正在使用computed属性在我的网站上显示数据,并从中返回数组: filteredPackages: function () { let titleSearch = this.packages.filter((mypackage, index, arr) => { return mypackage.title.match(new RegExp(this.search, "i")) }); return titleSearch; } 目前,它仅在title

目前,我正在使用computed属性在我的网站上显示数据,并从中返回数组:

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

但现在它只搜索一组字幕。如何在title和subtitle中搜索它,然后从计算属性返回数组?

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

return titleSearch.concat(subTitleSearch)
或者,如果要避免重复条目,可以执行以下操作

subTitleSearch = subTitleSearch.filter( s => titleSearch.indexOf(s) == -1);
return titleSearch.concat(subTitleSearch);

您可以使用
数组#some
检查一个谓词中的字幕和标题:

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

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

编辑答案以删除重复值是一种非常好的方法。非常感谢你的回答。