如何将包含数组的对象数组中的数据添加到另一个对象数组中?javascript

如何将包含数组的对象数组中的数据添加到另一个对象数组中?javascript,javascript,arrays,object,filter,Javascript,Arrays,Object,Filter,这是我的代码,我想创建另一个过滤数组,如下面的例子,我有2个数组,并想添加分数信息,我知道这很简单,但找不到解决方案 const wishesData = [ { name: "Peter", presents: ["coffee", "holidays"] }, { name: "Mario", presents: ["cof

这是我的代码,我想创建另一个过滤数组,如下面的例子,我有2个数组,并想添加分数信息,我知道这很简单,但找不到解决方案

  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
  }
});