Javascript 在数组的数组中查找对象

Javascript 在数组的数组中查找对象,javascript,arrays,reactjs,object,Javascript,Arrays,Reactjs,Object,如果我想通过这个数组的一个示例循环来查找Items数组中的特定项,那么如何处理这个问题?我提出了这个逻辑,但它不起作用 DATA.map((D)=>{ return D.items.find((item)=>{ return item.name ==='Blue Beanie' }) }) 这是一个数组,以及如何创建新的一个数组,其中包括两个项数组,如下所示:项:[{ id:1, 名称:“棕色边缘”, 价格:25 }, { id:2, 名字:'蓝豆

如果我想通过这个数组的一个示例循环来查找Items数组中的特定项,那么如何处理这个问题?我提出了这个逻辑,但它不起作用

DATA.map((D)=>{
    return D.items.find((item)=>{
       return item.name ==='Blue Beanie'
    })
  })
这是一个数组,以及如何创建新的一个数组,其中包括两个项数组,如下所示:项:[{ id:1, 名称:“棕色边缘”, 价格:25 }, { id:2, 名字:'蓝豆', 价格:18 }, { id:3, 名称:"阿迪达斯NMD",, 售价:220 }, { id:4, 名称:“阿迪达斯Yeezy”, 售价:280 } ]


数据
转换为项目列表,并从该列表中找到您期望的项目

const res = DATA.flatMap((D) => D.items).find(
  (item) => item.name === "Brown Brim"
)
const数据=[
{
id:1,
标题:“帽子”,
routeName:“帽子”,
项目:[
{
id:1,
名称:“棕色帽檐”,
价格:25,,
},
{
id:2,
名称:“蓝色豆豆”,
价格:18,
},
],
},
{
id:2,
标题:“运动鞋”,
routeName:“运动鞋”,
项目:[
{
id:3,
名称:“阿迪达斯NMD”,
价格:220,
},
{
id:4,
名称:“阿迪达斯Yeezy”,
价格:280,
},
],
},
]
const res=DATA.flatMap((D)=>D.items)。查找(
(项目)=>item.name==“棕色边缘”
)
console.log(res)
关于第一个问题“循环此数组以在Items数组中查找特定项” 如果它没有以任何方式排序,那么可以通过迭代数据数组并在项目内搜索来完成 如果要从“forEach”范围之外访问该项,则必须在“forEach”范围之外声明变量

关于第二个问题,在迭代数组时使用reduce函数

注意:您显然可以合并这两个任务,因为您已经在数组中进行了迭代,因此无需重复两次。但为了避免混淆,我把逻辑分开了。 另外,如果您确实选择组合任务,那么使用reduce并不相关,但与第一个问题的答案非常相似,您可以声明一个缓冲区(如数组),并在运行时将项目复制到其中(我将省去有关性能的问题)

const数据=[
{
id:1,标题:“Hats”,路由名称:“Hats”,
项目:[
{id:1,名称:'Brown Brim',价格:25},
{id:2,名字:'蓝色豆豆',价格:18}
]
},
{
id:2,标题:“运动鞋”,路线名称:“运动鞋”,
项目:[
{id:3,名称:'Adidas NMD',价格:220},
{id:4,名称:'Adidas Yeezy',价格:280}
]
}
];
//问题1
//创建将保存该项的对象
//在“forEach”范围之外,以便我们以后可以使用它
设res={};
const searchRes=DATA.forEach(条目=>{
entry.items.forEach(item=>{
如果(item.name=='Brown-Brim')
//将项复制到此范围外声明的变量
res={…项
};
});
});
log(`Q1-我们找到的项:`);
控制台日志(res);
//问题2
//使用Reduce合并“items”数组中的所有对象
const merged=DATA.reduce((acc,curr)=>
acc.concat(当前项目),[]);
log(`Q2-合并的数组:`);
console.log(合并)
这可能有用吗

const数据=[
{id:1,标题:'Hats',路由名称:'Hats',
商品:[{id:1,名称:“棕色边缘”,价格:25},
{id:2,名字:'Blue Beanie',价格:18}]},
{id:2,标题:'运动鞋',路线名称:'运动鞋',
商品:[{id:3,名称:'Adidas NMD',价格:220},
{id:4,名称:'Adidas Yeezy',价格:280}]}
];
log(DATA.map(D=>D.items.find(item=>item.name==='Brown-Brim'))

.filter(e=>e))
您期望的输出是什么?一个名为==='Blue Beanie'的对象:{id:2,名称:'Blue Beanie',价格:18}@khdeveloperj,您好,欢迎。在这种情况下,请批准该答案作为您问题的答案
const res = DATA.flatMap((D) => D.items).find(
  (item) => item.name === "Brown Brim"
)