Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过将对象键与值匹配来映射两个单独的数组_Javascript_Arrays_Object - Fatal编程技术网

Javascript 通过将对象键与值匹配来映射两个单独的数组

Javascript 通过将对象键与值匹配来映射两个单独的数组,javascript,arrays,object,Javascript,Arrays,Object,整个晚上我都在琢磨这个问题,没有找到解决办法 简言之 我正在从两个单独的API查询两个数组 它们以以下格式返回数据: API 1 [{ balance: 4444, age: "18", gender: "Male", level: "2", name: "Joe" }, { balance: 3333, age: "45", gender: "Ma

整个晚上我都在琢磨这个问题,没有找到解决办法

简言之

我正在从两个单独的API查询两个数组

它们以以下格式返回数据:

API 1

[{
  balance: 4444,
  age: "18",
  gender: "Male",
  level: "2",
  name: "Joe"
  
}, {
  balance: 3333,
  age: "45",
  gender: "Male",
  level: "3",
  name: "Angel"
}
}]
API 2

{
  Joe: {
    score: 32
  },
  Angel: {
    score: 22
  }
}
我需要将第二个API中的对象键与第一个API中playerInfo的名称值相匹配,以便生成一个完全平坦的新数组,如下所示:

[{
  balance: 4444,
  age: "18",
  gender: "Male",
  level: "2",
  name: "Joe",
  score: 32
  
}, {
  balance: 3333,
  age: "45",
  gender: "Male",
  level: "3",
  name: "Angel",
  score: 22
}
}]
这就是我现在的处境

var result = []

const matchKeys = (data, data1) => {    
  let arr = []
  arr.push(data1)

  data.map(item => {
    arr.map(item1 => {
      if (item.name === Object.keys(item1)) {
        result.push(Object.assign(item, item1))
        console.log(result)
      }
    })
  })
}

matchKeys(api1, api2)
我怀疑我没有走多远,因为我没有正确地访问第二个数据集,因为没有索引来跟踪我应该与数组中相应值配对的对象


非常感谢您的帮助

您可以使用
Array.map
实现这一点

const input1=[{
余额:4444,
年龄:"18岁",,
性别:“男性”,
级别:“2”,
姓名:“乔”
}, {
结余:3333,
年龄:"45岁",,
性别:“男性”,
级别:“3”,
名字:“天使”
}];
常量输入2={
乔:{
分数:32
},
天使:{
分数:22
}
}
功能匹配键(arr1、arr2){
const result=arr1.map((项目)=>{
如果(输入2[项目名称]){
返回{…item,…input2[item.name]};
}
退货项目;
});
返回结果;
}

日志(匹配键(input1,input2))您可以使用第二个对象的属性作为搜索正确名称的方法

const input1=[{
余额:4444,
年龄:"18岁",,
性别:“男性”,
级别:“2”,
姓名:“乔”
}, {
结余:3333,
年龄:"45岁",,
性别:“男性”,
级别:“3”,
名字:“天使”
}];
常量输入2={
乔:{
分数:32
},
天使:{
分数:22
}
}
常量匹配键=(数据,数据1)=>{
返回data.map((item)=>({…item,score:data1[item.name]?data1[item.name].score:0});
}

日志(匹配键(input1,input2))
api1.map((item)=>({…item,score:api2[item.name].score})谢谢!这解决了我的问题,我只需将input2更改为arr2