使用同一array变量反转整数数组,JS代码仅输出首值如何解决?
错误点梳理
- 核心错误:循环内执行了
array = array[left],直接将数组变量重新赋值为单个元素,后续所有操作都不再针对原数组,最终输出自然只有单个值 - 反转逻辑错误:当前代码仅交换了
left和right两个指针变量的数值,完全没有修改数组对应位置的元素,无法实现反转效果 - 循环边界错误:双指针反转数组仅需遍历数组长度的一半即可,遍历全长度会导致已经交换完成的元素被再次换回去
- 规范问题:循环变量
i未添加声明关键字,会隐式创建为全局变量,存在作用域污染风险
修正后代码
let array = [3, 8, 9, 6, 4, 2] reverseArray(array); function reverseArray(array){ let left = 0; let right = array.length - 1; // 左右指针相遇时停止循环 while(left < right) { // 交换数组左右指针位置的元素 const temp = array[left]; array[left] = array[right]; array[right] = temp; left++; right--; } console.log(array); }
数组是引用类型,函数内修改的就是原数组本身,外部的array变量会同步更新为反转后的结果,符合你复用同一个变量的需求。
内容的提问来源于stack exchange,提问作者VictorChars96
相关产品推荐
相关产品推荐

