Javascript中嵌套for循环的替代方案
我需要取数组1中的一个元素,并将其与数组2中的其他元素进行比较,以查看是否存在匹配项。我需要对数组1中的每个元素执行此操作Javascript中嵌套for循环的替代方案,javascript,reactjs,loops,for-loop,nested,Javascript,Reactjs,Loops,For Loop,Nested,我需要取数组1中的一个元素,并将其与数组2中的其他元素进行比较,以查看是否存在匹配项。我需要对数组1中的每个元素执行此操作 for ( let i = 0, j = userArray.length; i < j; i++) { for ( let c = 0, d = userArray.length; c < d; c++) { object = { id: userArray[i].accoun
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的每个单独元素进行比较,以搜索匹配项您可以使用Array.find或Array.filter Array.find-返回第一个匹配的元素 array.finditem=>item.id==1 Array.filter-返回所有匹配元素的数组 array.filteritem=>item.id==1 希望有帮助 您可以使用array reduce方法过滤用户数组,并将其映射到具有组合结果的新数组中 下面是一个带有存根数据的示例: 常量用户数组=[ {帐户:1,名称:'用户1'}, {帐户:2,名称:'用户2'}, {帐户:3,名称:'user 3'}, {帐户:4,名称:'user 4'}, {帐户:5,名称:'user 5'} ]; 常量accountArray=[ {id:1,名称:'account 1',标题:'account 1 title'}, {id:3,名称:'account 3',标题:'account 3 title'}, {id:5,名称:'account 5',标题:'account 5 title'} ]; const mergedList=userArray.reduceac,u=>{ const account=accountArray.finda=>a.id==u.account; 如果帐户{ acc.push{ id:美国账户, 姓名:u.name, 标题:account.title, 评级: } } 返回acc; }, [];
console.logmergedList;看起来您希望其中一个循环迭代accountArray数组。考虑到使用情况,可能是内部循环。它确实在if语句中迭代account数组,因为我只是在索引中使用计数器!:内部循环将根据userArray的长度继续,这似乎是不正确的。如果数组长度不相同,您将遇到异常userArray比accountArray长,或者您将错过accountArray中的元素userArray比accountArray短。这两个数组长度相同,但都有适当的注释,并将修改为零。我真的很想听到更多。为什么不使用map而不是reduce呢?最后,我们在一个数组上循环,然后在每个元素上使用.find执行另一个循环@Ajay-我不清楚如何使用map实现这一点。把你的建议贴出来作为答案,我来看看。