Javascript 通过将对象键与值匹配来映射两个单独的数组
整个晚上我都在琢磨这个问题,没有找到解决办法 简言之 我正在从两个单独的API查询两个数组 它们以以下格式返回数据: API 1Javascript 通过将对象键与值匹配来映射两个单独的数组,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
[{
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