如何将包含数组的对象数组中的数据添加到另一个对象数组中?javascript
这是我的代码,我想创建另一个过滤数组,如下面的例子,我有2个数组,并想添加分数信息,我知道这很简单,但找不到解决方案如何将包含数组的对象数组中的数据添加到另一个对象数组中?javascript,javascript,arrays,object,filter,Javascript,Arrays,Object,Filter,这是我的代码,我想创建另一个过滤数组,如下面的例子,我有2个数组,并想添加分数信息,我知道这很简单,但找不到解决方案 const wishesData = [ { name: "Peter", presents: ["coffee", "holidays"] }, { name: "Mario", presents: ["cof
const wishesData = [
{
name: "Peter",
presents: ["coffee", "holidays"]
},
{
name: "Mario",
presents: ["coffee", "videogames"]
},
{
name: "Amanda",
presents: ["computer", "tattoo"]
}
]
const scoresData= [
{
name: "Peter",
score: 10
},
{
name: "Mario",
score: 2.3
},
{
name: "Amanda",
score: 1.1
}
]
const result = wishesData.map((ele) => {
return {
...ele,
score: scoresData.find(s=> s.name === ele.name? s.score: 0)
}
})
console.log("este es el resultado=>",result)
我想修改数组wishesData,将“score”添加到其中的所有对象,并使其看起来像以下示例:
{
name: "Mario",
presents: ["coffee", "videogames"],
score: 2.3
}
返回整个对象,只需返回分数:
const wishesData=[{
姓名:“彼得”,
礼物:[“咖啡”、“假日”]
},
{
姓名:“马里奥”,
礼物:[“咖啡”、“电子游戏”]
},
{
姓名:“阿曼达”,
礼物:[“电脑”、“纹身”]
},
{
名称:“另一个”,
礼物:[“电脑”、“纹身”]
}
]
常数scoresData=[{
姓名:“彼得”,
分数:10
},
{
姓名:“马里奥”,
得分:2.3
},
{
姓名:“阿曼达”,
分数:1.1
}
]
const result=wishesData.map(ele=>{
const match=scoresData.find(s=>s.name==ele.name)
返回{…ele,分数:match?match.score:0}
})
console.log(“este es el resultado=>”,result)
请检查示例、更正和建议
- 更正:
-此处不关闭scoresData.find(s=>s.name==ele.name?s.score:0)
数组的括号。查找
并尝试在
中访问其属性。在代码中,您将获得find
对象,而不是scoreData
score
const match=scoresData.find(s=>s.name===ele.name);//->?s、 分数:0)
复赛?比赛成绩:0分;
//或者干脆
const score=scoresData.find(s=>s.name==ele.name)?.score|0;
- 建议:需要O(N^2)个时间。
的所有迭代都需要另一个迭代wishesData
。为什么不使用示例中提供的scoresData
reduce
const scoresmap=scoresData.reduce((a,c)=>({
A.
[c.姓名]:c.分数
}), {})
//你可以很容易地找到分数
const result=wishesData.map((ele)=>{
返回{
…ele,
得分:得分图[ele.name]| | 0,
}
})
谢谢
const wishesData=[{
姓名:“彼得”,
礼物:[“咖啡”、“假日”]
},
{
姓名:“马里奥”,
礼物:[“咖啡”、“电子游戏”]
},
{
姓名:“阿曼达”,
礼物:[“电脑”、“纹身”]
}
]
常数scoresData=[{
姓名:“彼得”,
分数:10
},
{
姓名:“马里奥”,
得分:2.3
},
{
姓名:“阿曼达”,
分数:1.1
}
]
const scoresmap=scoresData.reduce((a,c)=>({
A.
[c.姓名]:c.分数
}), {})
const result=wishesData.map((ele)=>{
返回{
…ele,
得分:得分图[ele.name]| | 0,
}
})
console.log(“este es el resultado=>”,result)
一个小的解释,说明它的作用是什么,虽然这段代码可能会解决这个问题,但它如何以及为什么解决这个问题会真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请在回答中添加解释,并说明适用的限制和假设。很好的解释!谢谢@AnuragSrivastava
const wishesWithScores = wishesData.map(wishObject => {
const descriptor = wishObject.name;
const { score } = scoresData.find(({ name }) => name === descriptor);
return {
...wishObject,
score
}
});