如何将数组拆分为奇偶数组并组成矩阵?JavaScript代码报错求助
问题分析与解决
1. 报错原因
函数参数已经声明了array1,函数内部又用const重复声明同名变量,触发SyntaxError: Identifier 'array1' has already been declared错误。
2. 逻辑错误
- 原代码判断的是索引的奇偶性(
i%2===0),而非数组元素的奇偶性,无法正确筛选偶数和奇数。 - 循环内部执行
array1.push(odd)和array1.unshift(even)会持续修改原数组长度,导致循环异常,且最终结果不符合预期。
3. 修正后的代码
function evenAndOdd(array1) { const odd = []; const even = []; for (let i = 0; i < array1.length; i++) { // 判断元素本身的奇偶性 if (array1[i] % 2 === 0) { even.push(array1[i]); } else { odd.push(array1[i]); } } // 返回由偶数数组、奇数数组组成的矩阵 return [even, odd]; } // 测试示例 console.log(evenAndOdd([1,2,3,4,5,6])); // 输出: [[2,4,6],[1,3,5]]
4. 代码说明
- 移除函数内部重复声明的
array1,直接使用传入的参数。 - 将判断条件改为
array1[i] % 2 === 0,正确筛选偶数元素,剩余元素存入奇数数组。 - 循环结束后,将偶数数组和奇数数组组合成新矩阵返回,避免修改原数组。
内容的提问来源于stack exchange,提问作者Imam
相关产品推荐
相关产品推荐

