JavaScript:嵌套循环追加数组,调整输出为指定二维数组格式
问题解决:调整嵌套循环生成目标数组
原代码的核心问题有两个:一是未将生成的子数组存入目标数组arr3,二是缺少最终输出arr3的逻辑。修改后的代码如下:
const arr1=[ [ 1,3 ], [ 5,4 ], [ 8,6, 11 ], [ 15, 19, 12 ] ]; const arr2=[ [21,23],[ 3, 2 ], [ 1,4 ], [ 5, 6 ,11 ] ]; const arr3=[]; console.log('Lost assests counts'); for (let i=0;i<arr1.length;++i) { const arrTemp=[] arrTemp.push(arr1[i].length) for (let j=i+1;j<arr2.length;++j){ const intersection = arr2[j].filter(element => arr1[i].includes(element)); arrTemp.push(intersection.length) } arr3.push(arrTemp); // 将每次生成的子数组存入arr3 } console.log(arr3); // 输出最终目标数组
关键调整说明:
- 存入目标数组:在内层循环结束后,通过
arr3.push(arrTemp)把生成的子数组添加到arr3中,确保目标数组能收集到所有结果。 - 保留循环逻辑:原代码中
j从i+1开始遍历arr2的逻辑是正确的,刚好匹配期望的子数组结构:i=0时,j遍历1、2、3,生成[2,1,1,0]i=1时,j遍历2、3,生成[2,1,1]i=2时,j遍历3,生成[3,2]i=3时,j不进入循环,生成[3]
- 最终输出结果:循环结束后打印
arr3,即可得到期望的输出格式[[2,1,1,0],[2,1,1],[3,2],[3]]
内容的提问来源于stack exchange,提问作者Deric
相关产品推荐
相关产品推荐

