【问题标题】:Checking if one array is contained in another inside an object检查一个数组是否包含在对象内的另一个数组中
【发布时间】:2019-10-09 14:54:20
【问题描述】:

我正在努力尝试让一个(我认为很简单的)过滤器起作用。

我有一个对象数组:

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]。

不幸的是,没有返回任何东西 - 我似乎无法弄清楚 - 这可能很简单,但任何见解都会受到赞赏!

【问题讨论】:

  • 您的“对象数组”是一个具有“数字”属性的对象。
  • 对象键不能在 Javascript 中启动或成为障碍。
  • @MasoodAslami 没有这样的规则。数组只是具有整数键的特殊对象
  • @adiga 我说的是对象键名而不是数组。

标签: javascript filter


【解决方案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);

【讨论】:

    猜你喜欢
    • 2016-04-24
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多