我需要在数组1中获取一个元素,并将其与数组2中的每个其他元素进行比较,以查看是否存在匹配项。我需要对数组一中的每个元素执行此操作。
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的每个单独的元素进行比较以搜索匹配项
答案 0 :(得分:-1)
您可以使用Array.find或Array.filter
Array.find -返回第一个匹配的元素
someVec[length-n]
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find
Array.filter -返回所有匹配元素的数组
array.find(item => item.id === 1)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
希望有帮助!
答案 1 :(得分:-1)
您可以使用数组reduce()
来过滤userArray
并将其映射到具有合并结果的新数组中。
这是一个示例(数据存有残缺):
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);