如何使用javascript映射数组数据



let userData = {
myData: [{
id: 1,
name: 'Russell',
country: 'Windes'
},
{
id: 2,
name: 'Smith',
country: 'USA'
}
],
ownerData: [{
id: 3,
name: 'Watson',
country: 'Australia'
},
{
id: 4,
name: 'Marcus',
country: 'England'
}
]
};
let records = arrayMapped(userData)
.then(res => console.log(res));

async function arrayMapped(user) {
let best4 = [];
user.myData.forEach(async(res, i) => {
res.myTeam = [];
user.ownerData.forEach(async(myTeam, j) => {
res.myTeam = myTeam;
});
best4.push(res);
});
return best4;
}

阵列推送行为weired

我原以为我的团队id 3应该低于1 id,而我的团队4 id应该低于2 id。

但目前它是采取4 id所有是什么原因请引导

感谢

您似乎希望并行迭代两个数组,因此不应该使用嵌套循环。只需使用myData循环的索引作为ownerData数组的索引。

let userData = {
myData: [{
id: 1,
name: 'Russell',
country: 'Windes'
},
{
id: 2,
name: 'Smith',
country: 'USA'
}
],
ownerData: [{
id: 3,
name: 'Watson',
country: 'Australia'
},
{
id: 4,
name: 'Marcus',
country: 'England'
}
]
};
let records = arrayMapped(userData)
.then(res => console.log(res));
async function arrayMapped(user) {
let best4 = [];
user.myData.forEach(async(res, i) => {
res.myTeam = user.ownerData[i];
best4.push(res);
});
return best4;
}

我注意到您有声明为async的函数,但它们不会异步执行任何操作。如果真正的函数是这样做的,请参阅使用带有forEach循环的async/await

最新更新