在 ES6 中使用 find
或 filter
我很乐意使用一个值遍历数组中的元素。
但是,我试图根据嵌套数组中的值从父数组中获取值。
例如,在这个数据结构中:
products: [
{
id: 01,
items: [
{
id: 01,
name: 'apple'
},
{
id: 02,
name: 'banana'
},
{
id: 03,
name: 'orange'
}
]
},
{
id: 02,
items: [
{
id: 01,
name: 'carrot'
},
{
id: 02,
name: 'lettuce'
},
{
id: 03,
name: 'peas'
}
]
},
{
id: 03,
items: [
{
id: 01,
name: 'eggs'
},
{
id: 02,
name: 'bread'
},
{
id: 03,
name: 'milk'
}
]
}
]
如果我知道 name
或 id
对象 milk
,有没有办法找出它嵌套在元素的 id 中?
目前我有这个:
products.find((product) => {
product.find((prod) => {
return prod.name === 'milk';
});
});
它只返回包含 milk
的对象。
原文由 Toby 发布,翻译遵循 CC BY-SA 4.0 许可协议
您必须从外部
find
的回调中返回一些东西。事实上,对于内部迭代,你不应该使用find
而是some
返回一个布尔值来判断数组中是否存在与条件匹配的元素:或简而言之:
然后检查----
.id
find
找到了一些东西(未找到----03
null
!或者,您可以filter
对于包含牛奶的产品,然后将所有结果映射到它们的 id: