JavaScript如何从索引1开始遍历包含对象的数组而非从0开始
问题分析
你的递归代码存在3个核心错误:
- 直接对数组执行
array-1运算不符合JS语法,数组无法和数字直接做减法 - 递归没有传入当前遍历的位置参数,也没有输出对应索引的元素,反而输出了整个数组
- 结束条件逻辑完全相反,你要从索引1遍历到末尾,应该是当前索引小于数组长度时继续执行,否则终止递归
正确实现方案
1. 递归版本实现
// startIndex 是遍历起始索引,这里传1即可满足需求 function traverseFromIndex(arr, currentIndex) { // 终止条件:当前索引超过数组最大索引就结束递归 if (currentIndex >= arr.length) return // 输出当前索引对应元素 console.log(arr[currentIndex]) // 索引+1后继续递归 return traverseFromIndex(arr, currentIndex + 1) } // 调用:从索引1开始遍历 traverseFromIndex(array, 1)
2. 更推荐的非递归实现(无递归栈溢出风险,写法更简洁)
方法一:从指定起始索引直接循环
for (let i = 1; i < array.length; i++) { console.log(array[i]) }
方法二:切割数组后遍历
// slice(1)会返回从索引1到末尾的新数组,直接遍历即可 array.slice(1).forEach(item => { console.log(item) })
内容的提问来源于stack exchange,提问作者ayomikuolatunji
相关产品推荐
相关产品推荐

