# JavaScript如何反轉數組
在JavaScript開發中,數組反轉是常見的操作需求。本文將詳細介紹5種反轉數組的方法,包括原生API、經典算法實現以及性能對比,幫助開發者根據場景選擇最佳方案。
## 1. 使用Array.prototype.reverse()
最直接的方法是調用數組內置的`reverse()`方法:
```javascript
const arr = [1, 2, 3, 4];
arr.reverse(); // 原地反轉
console.log(arr); // [4, 3, 2, 1]
特點: - 原地修改原數組 - 返回反轉后的數組引用 - 時間復雜度O(n)
需要保留原數組時,可結合擴展運算符創建新數組:
const original = [1, 2, 3];
const reversed = [...original].reverse();
函數式編程風格的實現方式:
const arr = [1, 2, 3];
const reversed = arr.reduce((acc, cur) => [cur, ...acc], []);
手動實現反轉算法:
function reverseArray(arr) {
const result = [];
for (let i = arr.length - 1; i >= 0; i--) {
result.push(arr[i]);
}
return result;
}
更高效的原地反轉算法(類似reverse()底層實現):
function reverseInPlace(arr) {
let left = 0;
let right = arr.length - 1;
while (left < right) {
[arr[left], arr[right]] = [arr[right], arr[left]];
left++;
right--;
}
return arr;
}
方法 | 時間復雜度 | 空間復雜度 | 是否修改原數組 |
---|---|---|---|
reverse() | O(n) | O(1) | 是 |
擴展運算符+reverse | O(n) | O(n) | 否 |
reduce | O(n) | O(n) | 否 |
for循環 | O(n) | O(n) | 否 |
雙指針法 | O(n) | O(1) | 是 |
僅反轉第一層:
[[1,2], [3,4]].reverse(); // [[3,4], [1,2]]
需先轉換為真數組:
Array.prototype.reverse.call(arguments);
reverse()
或雙指針法reverse()
或reduce掌握這些方法可以應對不同業務場景的需求,建議根據實際場景選擇最合適的實現方式。 “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。