js手动实现reverse
实现数组反转的方法
手动实现 JavaScript 的 reverse 方法可以通过多种方式完成。以下是几种常见的实现方式:
原地反转数组
通过交换数组的首尾元素来实现反转,这种方法会修改原数组:
function reverseArray(arr) {
let left = 0;
let right = arr.length - 1;
while (left < right) {
[arr[left], arr[right]] = [arr[right], arr[left]];
left++;
right--;
}
return arr;
}
创建新数组反转

创建一个新数组来存储反转后的元素,原数组不会被修改:
function reverseArray(arr) {
const reversed = [];
for (let i = arr.length - 1; i >= 0; i--) {
reversed.push(arr[i]);
}
return reversed;
}
使用 reduce 方法

利用 reduce 方法实现数组反转:
function reverseArray(arr) {
return arr.reduce((acc, current) => [current, ...acc], []);
}
递归实现
通过递归方式反转数组:
function reverseArray(arr) {
if (arr.length === 0) return [];
return [arr[arr.length - 1], ...reverseArray(arr.slice(0, -1))];
}
性能比较
- 原地反转方法效率最高,因为它只需要遍历数组的一半长度。
- 创建新数组的方法需要完整遍历数组,并且会占用额外的内存空间。
reduce和递归方法虽然简洁,但在处理大型数组时可能会有性能问题。
注意事项
- 如果需要保留原数组不变,应选择创建新数组的方法。
- 如果对性能有较高要求,原地反转是更好的选择。
- 递归方法在数组较大时可能会导致栈溢出。






