如何解决在Array of Array中查找对象
如果我想要一个示例循环,则可以通过此数组在Items Array中查找特定项目,该如何处理?我提出了这个逻辑,但是没有用
DATA.map((D)=>{
return D.items.find((item)=>{
return item.name ==='Blue Beanie'
})
})
这是Array,以及如何创建新的ONE数组,其中包括item数组,就像这样:items:[{ 编号:1 名称:“棕边”, 价格:25 }, { 编号:2 名称:“蓝色豆豆” 价格:18 }, { id:3, 名称:“ Adidas NMD”, 价格:220 }, { 编号:4 名称:“ Adidas Yeezy”, 价格:280 } ]
const DATA= [
{
id: 1,title: 'Hats',routeName: 'hats',items: [
{
id: 1,name: 'brown Brim',price: 25
},{
id: 2,name: 'Blue Beanie',price: 18
}
]
},{
id: 2,title: 'sneakers',routeName: 'sneakers',items: [
{
id: 3,name: 'Adidas NMD',price: 220
},{
id: 4,name: 'Adidas Yeezy',price: 280
}
]
}
];
解决方法
将DATA
转换为项目列表,然后从该列表中找到所需的项目
const res = DATA.flatMap((D) => D.items).find(
(item) => item.name === "Brown Brim"
)
const DATA = [
{
id: 1,title: "Hats",routeName: "hats",items: [
{
id: 1,name: "Brown Brim",price: 25,},{
id: 2,name: "Blue Beanie",price: 18,],{
id: 2,title: "Sneakers",routeName: "sneakers",items: [
{
id: 3,name: "Adidas NMD",price: 220,{
id: 4,name: "Adidas Yeezy",price: 280,]
const res = DATA.flatMap((D) => D.items).find(
(item) => item.name === "Brown Brim"
)
console.log(res)
参考
,关于第一个问题“循环遍历此数组以在Items数组中查找特定项” 鉴于它没有以任何方式排序,可以通过遍历DATA数组并在项目内部进行搜索来完成 如果要从“ forEach”范围的外部访问该项目,则必须在外部声明变量
关于第二个问题,在迭代数组时使用reduce函数
注意:您显然可以在遍历数组的同时合并这两个任务,因此无需重复两次。但是为了避免混淆,我分离了逻辑。 另外,如果您确实选择合并任务,则使用reduce并不重要,但与第一个问题的答案非常相似,您可以声明一个缓冲区(例如数组),然后随时将其复制到其中(我会在这方面忽略性能问题
const DATA = [
{
id: 1,title: 'Hats',routeName: 'hats',items: [
{id: 1,name: 'Brown Brim',price: 25},{id: 2,name: 'Blue Beanie',price: 18}
]
},title: 'Sneakers',routeName: 'sneakers',items: [
{id: 3,name: 'Adidas NMD',price: 220},{id: 4,name: 'Adidas Yeezy',price: 280}
]
}
];
//Question 1
//creating the object that will hold the item
//outside of the 'forEach' scope so we can use it later
let res = {};
const searchRes = DATA.forEach(entry => {
entry.items.forEach(item => {
if (item.name === 'Brown Brim')
//duplicating the item to a variable declared outside of this scope
res = { ...item
};
});
});
console.log(`Q1 - The item we found:`);
console.log(res);
// Question 2
// Merging all object inside the 'items' array using Reduce
const merged = DATA.reduce((acc,curr) =>
acc.concat(curr.items),[]);
console.log(`Q2 - The merged array:`);
console.log(merged)
,
也许这很有帮助?
const DATA= [
{id: 1,title:'Hats',routeName:'hats',items:[{id: 1,name:"Brown Brim",price:25},price: 18}]},items: [{id: 3,price: 280}]}
];
console.log(DATA.map(D=>D.items.find(item=>item.name==='Brown Brim'))
.filter(e=>e))
.map
返回与您的条件匹配的元素或undefined
,链接的.filter
然后删除所有“虚假”元素,即i。 e。所有undefined
个。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。