javascript - 过滤数组中的数组
问题描述
我有一个具有特定 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},
],
}
];```
解决方案
您可以使用过滤器功能:
var filteredProductsArray = productsArray.filter(product => product.materials.filter(material => material.id === myMaterialId).length > 0);
这将通过过滤所有产品的材料来过滤所有产品,以查看材料数组是否具有具有您的材料 ID 的材料。
推荐阅读
- vert.x - 如何使用 vert.x
- windows - ClinkOnce 或注册应用程序 URI?
- python - 在 GitPython 中切换分支
- python - 计算数据框列中列表中单词的出现次数
- javascript - 我需要在 onChange 之后设置和发送滑块的值
- android - 通过href意图打开文件而不下载
- python-3.x - drf-yasg - 从 urls.py 中读取 http_method_names
- optimization - 分数VS。gamultiobj 优化中的 fval
- ios - 使用 PHP 一次验证来自 Apple 的多个收据
- javascript - 下拉列表值取决于另一个下拉列表中的选定值