我正在努力尝试让(我认为很简单的)过滤器工作。
我有一个对象数组:
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]。
不幸的是,没有返回任何东西 - 我似乎不太明白 - 这可能很简单,但任何见解都将不胜感激!
最佳答案
假设一个数组作为数据,您可以通过获取 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);
关于javascript - 检查一个数组是否包含在对象内部的另一个数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58306933/