gpt4 book ai didi

javascript - ES6 - 在嵌套数组中查找数据

转载 作者:可可西里 更新时间:2023-11-01 01:46:00 25 4
gpt4 key购买 nike

在使用 findfilter 的 ES6 中,我很乐意使用一个值遍历数组来查找元素。

但是,我正在尝试根据嵌套数组中的值从父数组中获取值。

例如,在这个数据结构中:

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'
}
]
}
]

如果我知道对象 milknameid,有没有办法找出它嵌套的元素的 id在?

目前我有这个:

products.find((product) => {
product.find((prod) => {
return prod.name === 'milk';
});
});

它只返回包含milk 的对象。

最佳答案

您必须从外部 find 的回调中返回一些内容。事实上,对于内部迭代,您不应该使用 find 而应该使用 some返回一个 bool 值,表示数组中是否存在与条件匹配的元素:

products.find((product) => {
return product.items.some((item) => {
//^^^^^^
return item.name === 'milk';
});
});

或者简而言之:

products.find(product => product.items.some(item => item.name === 'milk'));

然后检查find是否找到了东西(不是null!)并得到它的.id,结果应该是03。或者,您可以过滤包含牛奶的产品,然后将所有结果映射到它们的 id:

products.filter(product =>
product.items.some(item => item.name === 'milk');
).map(product =>
product.id
) // [03]

关于javascript - ES6 - 在嵌套数组中查找数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40025718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com