Codecademy案例中用unshift()实现reverseArray的原理疑问
// 使用.unshift()方法 const reverseArray = arr => { let reversed = []; for (let i = 0; i < arr.length; i++) { reversed.unshift(arr[i]); } return reversed }
核心原因是unshift()方法的作用是将传入的元素插入到调用数组的最开头,而非常规push方法那样追加到数组末尾。
我们拿实际示例走一遍流程就能直观理解,假设传入的原数组是[1,2,3]:
- 第一次遍历拿到原数组第一个元素1,插入空数组开头,得到新数组
[1] - 第二次遍历拿到原数组第二个元素2,插入当前数组开头,得到新数组
[2,1] - 第三次遍历拿到原数组第三个元素3,插入当前数组开头,得到新数组
[3,2,1]
等于每一个后遍历到的原数组元素,都会被插到之前已经插入的元素前面,最后自然就形成了原数组倒序的结果,和从后往前遍历原数组再push到新数组的效果完全一致。
内容的提问来源于stack exchange,提问作者misssn
相关产品推荐
相关产品推荐

