[英]How to add data from array of object with array inside to another array of object? javascript
這是我的代碼,我想創建另一個過濾數組,如下例所示,我有 2 個 arrays 並想向其中添加分數信息,我知道這很簡單但找不到解決方案
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)
我想修改數組wishData,將“分數”添加到里面的所有對象,並看起來像這個例子:
{
name: "Mario",
presents: ["coffee", "videogames"],
score: 2.3
}
請檢查示例和更正和建議。
scoresData.find(s=> s.name === ele.name? s.score: 0)
- 在這里你沒有關閉Array.find
的括號並嘗試在find
中訪問它的屬性。 在您的代碼中,您將獲得scoreData
object 而不是score
。const match = scoresData.find(s=> s.name === ele.name); // -> ? s.score: 0)
return match ? match.score : 0;
// or simply
const score = scoresData.find(s=> s.name === ele.name)?.score || 0;
wishesData
的所有迭代都需要另一個迭代scoresData
。 為什么不使用示例中提供的reduce
?const scoreMap = scoresData.reduce((a, c) => ({
...a,
[c.name]: c.score
}), {})
// you can easy to find score by
const result = wishesData.map((ele) => {
return {
...ele,
score: scoreMap[ele.name] || 0,
}
})
謝謝
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 scoreMap = scoresData.reduce((a, c) => ({...a, [c.name]: c.score }), {}) const result = wishesData.map((ele) => { return {...ele, score: scoreMap[ele.name] || 0, } }) console.log("este es el resultado=>", result)
這只是編輯您的原始代碼
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)?.score || 0 } }) console.log("este es el resultado=>", result)
你返回整個 object,只返回分數:
const wishesData = [{ name: "Peter", presents: ["coffee", "holidays"] }, { name: "Mario", presents: ["coffee", "videogames"] }, { name: "Amanda", presents: ["computer", "tattoo"] }, { name: "Another", presents: ["computer", "tattoo"] } ] const scoresData = [{ name: "Peter", score: 10 }, { name: "Mario", score: 2.3 }, { name: "Amanda", score: 1.1 } ] const result = wishesData.map(ele => { const match = scoresData.find(s => s.name === ele.name) return {...ele, score: match? match.score: 0 } }) console.log("este es el resultado=>", result)
const wishesWithScores = wishesData.map(wishObject => {
const descriptor = wishObject.name;
const { score } = scoresData.find(({ name }) => name === descriptor);
return {
...wishObject,
score
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.