【问题标题】:JavaScript array of objects contains every element of another arrayJavaScript 对象数组包含另一个数组的每个元素
【发布时间】:2020-09-16 21:22:33
【问题描述】:

我有一个对象数组(array1)。 我想过滤每个元素,包括所有标签([1、2、3)。 所以结果应该是 id 1。但我不能让它工作。我得到的结果是 id 1, 2 ,4 我不明白为什么它会这样。

let array1 = [
  { id: 1, tags: [1, 2, 3] },
  { id: 2, tags: [2, 3] },
  { id: 3, tags: [0, 3] },
  { id: 4, tags: [1, 3] }
];

let tags = [1, 2, 3];

let includesAll = array1.filter((a1) =>
  a1.tags.every((tag) => tags.includes(tag))
);

console.log(includesAll);

【问题讨论】:

    标签: javascript arrays filter javascript-objects


    【解决方案1】:

    你应该做相反的事情。与其验证a1.tags 中的每个值是否也在tags 中,不如验证tags 中的每个值是否也在a1.tags 中:

    let includesAll = array1.filter((a1) =>
      tags.every((tag) => a1.tags.includes(tag))
    );
    

    let array1 = [
      { id: 1, tags: [1, 2, 3] },
      { id: 2, tags: [2, 3] },
      { id: 3, tags: [0, 3] },
      { id: 4, tags: [1, 3] }
    ];
    
    let tags = [1, 2, 3];
    
    let includesAll = array1.filter((a1) =>
      tags.every((tag) => a1.tags.includes(tag))
    );
    
    console.log(includesAll);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 2021-05-28
      • 2014-05-02
      • 2023-03-08
      相关资源
      最近更新 更多