查找包含字符串的数组

时间:2019-02-03 06:39:35

标签: javascript arrays

我有一个vuejs项目,我想用列表组件实现搜索组件 我从搜索组件中获得了所需的东西,并将其传递给列表组件,并且在其中有一个用于过滤其列表项的计算功能

我尝试了此操作,但没有按预期工作

 filteredItems() {
      return this.items.filter(item => {
        if (this.search != "") return item.includes(this.search);
        else return true;
      });
    }

如果我具有列表项这样的数组,则在此代码中

items:[
   ['abc','def','ghi'],
   ['ajk,'lmn','opq']
]

如果我将'a'传递给我的计算函数,则我想同时使用这两个数组,但一无所获,我必须专门传递'abc'才能获得第一个数组,而这不是搜索的原理。

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:6)

您需要使用.some检查是否有任何数组项包含子字符串:

const items = [
   ['abc','def','ghi'],
   ['ajk','lmn','opq']
];
const doFilter = search => (
  items.filter(
    (arr) => arr.some((str) => str.includes(search))
  )
);
console.log(doFilter('a'));
console.log(doFilter('ab'));