我需要获取数组一中的一个元素,并将其与数组二中的每个其他元素进行比较,看看是否存在匹配。我需要对数组一中的每个元素执行此操作。
for ( let i = 0, j = userArray.length; i < j; i++) {
for ( let c = 0, d = userArray.length; c < d; c++) {
object = {
id: userArray[i].account,
name: userArray[i].name,
title: "",
rating: ""
}
if ( userArray[i].account === accountArray[c].id) {
object.title = accountArray[c].title.title
}
if (object.title !== ""){
objectArray.push(object)
}
}
}
有没有更有效的方法来解决这个问题。
期望的结果是将 accountArray 的每个元素与 userArray 的每个元素进行比较以搜索匹配项
最佳答案
您可以使用数组 reduce()
方法来过滤您的 userArray
并将其映射到具有组合结果的新数组中。
这是一个示例(带有 stub 数据):
const userArray = [
{ account: 1, name: 'user 1' },
{ account: 2, name: 'user 2' },
{ account: 3, name: 'user 3' },
{ account: 4, name: 'user 4' },
{ account: 5, name: 'user 5' }
];
const accountArray = [
{ id: 1, name: 'account 1', title: 'account 1 title' },
{ id: 3, name: 'account 3', title: 'account 3 title' },
{ id: 5, name: 'account 5', title: 'account 5 title' }
];
const mergedList = userArray.reduce((acc, u) => {
const account = accountArray.find(a => a.id === u.account);
if (account) {
acc.push({
id: u.account,
name: u.name,
title: account.title,
rating: ''
})
}
return acc;
}, []);
console.log(mergedList);
关于javascript - Javascript 中嵌套 for 循环的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57928481/