首页 > 解决方案 > 检查一个数组是否包含在对象内的另一个数组中

问题描述

我正在努力尝试让(我虽然很简单)过滤器工作。

我有一个对象数组:

data: 
  {
    0: {key: 'abc', name: ['bob', 'john', 'steve']},
    1: {key: 'def', name: ['bob']}
   }

我正在尝试一个数组来过滤对象数组:

filter: ['bob', 'john']

通过使用:

data.filter(v => v.name.includes(filter))

在上面,我希望返回 data[0],如果我将过滤器更改为filter: ['bob']然后 data[0,1] 将返回。

不幸的是,什么都没有返回——我似乎不太明白——这可能很简单,但任何见解都会受到赞赏!

标签: javascriptfilter

解决方案


假设一个数组作为数据,您可以通过获取name数组进行过滤并针对该数组检查每个过滤器项。

var data = [{ key: 'abc', name: ['bob', 'john', 'steve'] }, { key: 'def', name: ['bob'] }],
    filter = ['bob', 'john'],
    result = data.filter(({ name }) => filter.every(f => name.includes(f)));

console.log(result);


推荐阅读