如何在JavaScript中使用forEach循环实现数组倒序遍历
解决方案
两种方案均满足仅使用forEach遍历原数组、不对原数组执行索引操作的限制,你可以根据实际场景选择:
- 方案1:拷贝反转后遍历
实现逻辑:先对原数组做浅拷贝,再反转拷贝后的数组,直接对反转数组执行forEach即可得到原数组的倒序遍历效果,全程不需要对原数组执行索引操作,也不会修改原数组的值。
代码示例:
const test = [1,2,3,4,5]; // 扩展运算符做浅拷贝,reverse仅作用于拷贝后的新数组 [...test].reverse().forEach(item => { console.log(item); })
说明:该方案代码简洁易读,浅拷贝+反转的开销对于绝大多数业务场景完全可以忽略,如果原数组存储的是引用类型对象,浅拷贝仅复制引用不会额外复制对象本身,内存开销极低。
- 方案2:栈缓存遍历
实现逻辑:正向遍历原数组时将所有元素存入栈结构,遍历完成后依次弹出栈内元素执行处理,弹出顺序就是原数组的倒序,也不需要对原数组做索引操作。
代码示例:
const test = [1,2,3,4,5]; const elementStack = []; // 正向遍历存入栈 test.forEach(item => elementStack.push(item)); // 弹栈处理得到倒序 while(elementStack.length) { const currentItem = elementStack.pop(); console.log(currentItem); }
说明:该方案不需要生成完整的反转数组拷贝,适合处理体量极大的数组的场景,内存占用更低。
内容的提问来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

