首页 > 解决方案 > 过滤数组中的数组

问题描述

我有一个具有特定 ID 号的材料和一组产品,其中包含一组材料。我需要过滤掉所有包含该特定材料的产品(所有在其材料数组中具有该 ID 号的产品)。有没有使用 ES6 语法的快速方法?

例如

const myMaterialId = 100

const productsArray = [
  {
    name: products,
    materials: [
      {id: 100, amount: 30},
      {id: 102, amount: 20},
    ],
  },
  {
    name: product2,
    materials: [
      {id: 115, amount: 25},
      {id: 120, amount: 50},
    ],
  },
  {
    name: product2,
    materials: [
      {id: 100, amount: 35},
      {id: 120, amount: 50},
      {id: 150, amount: 10},
    ],
  }
];```


标签: javascriptarrayssortingfilter

解决方案


您可以使用过滤器功能:

var filteredProductsArray = productsArray.filter(product => product.materials.filter(material => material.id === myMaterialId).length > 0);

这将通过过滤所有产品的材料来过滤所有产品,以查看材料数组是否具有具有您的材料 ID 的材料。


推荐阅读