在 JavaScript 中反轉數組
在本教程中,我們將了解 如何在 JavaScript 中反轉數組 .有幾種方法可以做到這一點,而確定要採用哪一種通常取決於您的個人喜好。
我們將反轉這兩個數組:
let numArr = [1, 2, 3, 4, 5]
let strArr = ['Java', 'Python', 'JavaScript']
使用 Array.reverse()
反轉數組最簡單的方法是通過 reverse()
方法:
let numArrReversed = numArr.reverse();
let strArrReversed = strArr.reverse();
console.log(numArrReversed);
console.log(strArrReversed);
我們創建了兩個新變量來指向結果數組:
[ 5, 4, 3, 2, 1 ]
[ 'JavaScript', 'Python', 'Java' ]
注意: reverse()
方法反轉數組就地 .這意味著原來的 num_array
和 string_array
被顛倒了,原來的順序就丟失了。
您不需要創建新變量來將指向這些數組的指針存儲在內存中,因為原始指針已經指向反向數組:
numArr.reverse();
strArr.reverse();
console.log(numArr);
console.log(strArr);
這也導致:
[ 5, 4, 3, 2, 1 ]
[ 'JavaScript', 'Python', 'Java' ]
但是,將結果“分配”給新變量以指示更改的狀態仍然是常見的做法,或者至少為轉換後的數組分配一個更具指示性的名稱,例如 array_reversed
.
函數反轉數組
函數式編程是一個美妙的 除了大多數命令 編程語言。函數式構造允許我們通過直觀和簡單的指令對對象和序列執行各種甚至是複雜的變革性操作。
許多開發人員只是喜歡在可能的情況下使用函數式構造,因此反轉數組通常也通過函數式構造完成也就不足為奇了。這種方法還允許您在反轉的同時進行另一個轉換,例如添加或更改元素。
為了在 JavaScript 中函數式地反轉數組,我們將利用擴展運算符和 map()
功能:
// Preserves original array
let numArrReversed = numArr.map(numArr.pop, [...numArr]);
// Doesn't preserve original array
let strArrReversed = [...strArr].map(strArr.pop, strArr);
map()
方法映射每個彈出 numArr
中的元素(刪除最後一個元素) 並將其推入一個新數組,該數組被創建為 numArr
的副本 .通過刪除最後一個元素並將其作為第一個元素添加到新數組中,我們創建了一個新的反轉數組。
第一種方法處理 numArr
的凍結副本 對象,因此不會修改原始數組。
在第二種方法中,我們在 map()
中使用對原始數組的引用來修改原始數組 方法,即使我們事先創建了數組的副本:
console.log('Original num_array: ' + numArr);
console.log('Original string_array: ' + strArr);
console.log('Reversed num_array: ' + numArrReversed);
console.log('Reversed string_array: ' + strArrReversed);
因此,當一切都說完了,num_array
保持不變,而 string_array
不見了:
Original num_array: 1,2,3,4,5
Original string_array:
Reversed num_array: 5,4,3,2,1
Reversed string_array: JavaScript,Python,Java
用 for 反轉數組 循環
最後,好的舊方法是簡單地通過 for
運行數組 倒序循環,並將每個元素添加到一個新數組中。
這對於創建一個新的反轉數組非常有用,但不會就地反轉舊數組。如果您想就地反轉它,您需要使用 unshift()
在數組開頭添加元素的方法,同時拼接 (就地操作)不斷:
免費電子書:Git Essentials
查看我們的 Git 學習實踐指南,其中包含最佳實踐、行業認可的標準以及隨附的備忘單。停止谷歌搜索 Git 命令並真正學習 它!
function reverse(array) {
let newArr = [];
for(i = array.length-1; i >= 0; i--) {
newArr.push(array[i]);
}
return newArr;
}
function reverseInPlace(array) {
for(i = 0; i < array.length; i++) {
let tmp = array.splice(i, 1)[0];
array.unshift(tmp);
}
return array;
}
您可以將這些方法用作:
let numArrReversed = reverseInPlace(numArr);
let strArrReversed = reverse(strArr);
console.log('Original num_array: ' + numArr);
console.log('Original string_array: ' + strArr);
console.log('Reversed num_array: ' + numArrReversed);
console.log('Reversed string_array: ' + strArrReversed);
結果是:
Original num_array: 5,4,3,2,1
Original string_array: Java,Python,JavaScript
Reversed num_array: 5,4,3,2,1
Reversed string_array: JavaScript,Python,Java