JavaScript实现zip函数 修复代码仅返回首个索引对的问题
JS zip函数实现问题修复
问题原因
- 核心错误是
return语句的位置错误:你把return pairArr放在了for循环的内部,循环执行第一轮、完成首个索引元素配对入栈后,就会直接触发return终止函数执行,因此只会返回包含首个配对的数组。 - 次要优化点:两个数组长度相等的判断放在循环内部无意义,每次循环都会重复执行一次校验,放到函数入口做一次判断即可。
修复后的代码
function zip(arr1, arr2) { // 开头先做长度校验,不相等可以直接抛出错误或者返回空,按需调整 if(arr1.length !== arr2.length) { throw new Error('两个数组长度必须相等'); } let pairArr = []; for(let i = 0; i < arr1.length; i++) { let pairs = [arr1[i], arr2[i]]; pairArr.push(pairs); } // 循环全部执行完成后再返回结果 return pairArr; }
测试验证
输入zip([1, 2, 3, 4], [1, 2, 3, 4]),即可得到预期输出[[1, 1], [2, 2], [3, 3], [4, 4]]。
内容的提问来源于stack exchange,提问作者Andrawes Batshoun
相关产品推荐
相关产品推荐

