二维数组元素复制异常:bikeBrands2始终返回undefined
多维数组复制后返回undefined的解决办法
你的代码核心问题是数组长度属性拼写错误:把length写成了lenght。
JavaScript中,访问对象不存在的属性会返回undefined,所以bikeBrands.lenght的值是undefined。循环条件i < undefined等价于i < NaN,结果为false,导致循环体根本没执行,bikeBrands2自然没有被赋值,最终输出空数组(若你看到undefined可能是调试时的误判,但本质是循环未执行)。
修正后的代码
const bikeBrands = []; bikeBrands[0] = ['Susuki', 'Kawasaki']; bikeBrands[1] = ['Honda', 'KTM']; const bikeBrands2 = []; for (var i = 0; i < bikeBrands.length; i++) bikeBrands2[i] = bikeBrands[i].slice(); console.log(bikeBrands2); // 输出:[ ['Susuki', 'Kawasaki'], ['Honda', 'KTM'] ]
更简洁的复制方式
除了for循环,你也可以用map方法实现浅拷贝,代码更简洁:
// 用slice复制子数组 const bikeBrands2 = bikeBrands.map(brandArr => brandArr.slice()); // 或者用扩展运算符 const bikeBrands2 = bikeBrands.map(brandArr => [...brandArr]);
内容的提问来源于stack exchange,提问作者sansievar
相关产品推荐
相关产品推荐

