Reverse an Array in JavaScript
arr.reverse() mutates. [...arr].reverse() if you still need the original.
BeginnerArray ProgramsExample 4 of 6
reverse-an-array.js
1// Method 1: Using reverse() method (mutates original)2let arr1 = [1, 2, 3, 4, 5];3arr1.reverse();4console.log("Using reverse():", arr1);56// Method 2: Using reverse() without mutation (spread operator)7let arr2 = [1, 2, 3, 4, 5];8let reversed = [...arr2].reverse();9console.log("\nOriginal:", arr2);10console.log("Reversed (new array):", reversed);1112// Method 3: Using for loop13function reverseArray(arr) {14 let reversed = [];15 for (let i = arr.length - 1; i >= 0; i--) {16 reversed.push(arr[i]);17 }18 return reversed;19}2021console.log("\nUsing loop:", reverseArray([10, 20, 30, 40]));2223// Method 4: Using while loop with two pointers24function reverseArrayTwoPointers(arr) {25 let left = 0;26 let right = arr.length - 1;27 let reversed = [...arr];2829 while (left < right) {30 // Swap elements31 [reversed[left], reversed[right]] = [reversed[right], reversed[left]];32 left++;33 right--;34 }35 return reversed;36}3738console.log("\nTwo pointers:", reverseArrayTwoPointers([1, 2, 3, 4, 5]));3940// Method 5: Using reduce41function reverseArrayReduce(arr) {42 return arr.reduce((acc, item) => [item, ...acc], []);43}4445console.log("\nUsing reduce:", reverseArrayReduce(['a', 'b', 'c', 'd']));4647// Method 6: In-place reversal (mutates original)48function reverseInPlace(arr) {49 let left = 0;50 let right = arr.length - 1;5152 while (left < right) {53 [arr[left], arr[right]] = [arr[right], arr[left]];54 left++;55 right--;56 }57 return arr;58}5960let original = [1, 2, 3, 4];61console.log("\nIn-place:", reverseInPlace(original));62console.log("Original mutated:", original);
Output
Using reverse(): [ 5, 4, 3, 2, 1 ] Original: [ 1, 2, 3, 4, 5 ] Reversed (new array): [ 5, 4, 3, 2, 1 ] Using loop: [ 40, 30, 20, 10 ] Two pointers: [ 5, 4, 3, 2, 1 ] Using reduce: [ 'd', 'c', 'b', 'a' ] In-place: [ 4, 3, 2, 1 ] Original mutated: [ 4, 3, 2, 1 ]
What's going on
.reverse() flips in place. Then you debug why the original list is backwards.
[...arr].reverse() or arr.toReversed() (newer) copies first.