Часто в программировании на JavaScript нужно поменять порядок элементов в массиве. То есть мы хотим развернуть массив задом на перёд. Мы хотим, чтобы последний элемент массива стал первым, а предпоследний вторым, и так далее. Как это сделать?
На 2023 год можно применить 8 способов переворота массива на JavaScript.
Способ № 1 — Переворот массива методом reverse()
Чтобы перевернуть этот массив JavaScript нужно воспользоваться методом reverse(), который наследуются от прототипа Array.
// Нормальный массив var arr11 = [11,22,33]; var arr12 = arr11.reverse(); // Дырявый массив var arr_11 = [11,,,22,,,33,,,]; var arr_12 = arr_11.reverse();
Эта команда перевернёт массив на котором вызывается метод. Круглые скобки обязательны, они означают вызов метода. Если не указать круглые скобки, то мы просто получим саму функцию reverse, а не её выполнение. Нам нужно выполнить вызов метода.
В чём проблема?
Мы не получаем новый массив, а перестраиваем элементы старого массива. Это не всегда удобно.
Чтобы сохранить порядок в старом массиве, сделайте его клон и в нём поменяйте порядок элементов.
Способ № 2 — Переворот массива методом toReversed()
// Нормальный массив var arr21 = [4,5,6,7]; var arr22 = arr21.toReversed(); // Дырявый массив var arr_21 = [4,,,5,6,7,,]; var arr_22 = arr_21.toReversed();
Способ № 3 — Переворот массива циклом for
var arr31 = ['q','w','e','r'];
var arr32 = [];
for(let i=0; i<arr31.length; i++){
arr32[i] = arr31[arr31.length-i-1]
};
var arr33 = ['q','w','e','r'];
var arr34 = [];
for(let i=0, l=arr33.length; i<l; i++){
arr34[i] = arr33[l-i-1]
};
Способ № 4 — Переворот массива циклом for in
var arr41 = ['a','s','d','f'];
var arr42 = [];
for(let i in arr41){
arr42[i] = arr41[arr41.length-i-1]
};
Способ № 5 — Переворот массива циклом for of
var arr57 = ['a','s','d','f'];
var arr58 = [];
for(let v of arr57){
arr58.length = arr58.length || arr57.length*2;
arr58[arr58.length - arr57.length - 1] = v;
arr58.length = arr58.length-1;
};
Способ № 6 — Переворот массива циклом while
var arr61 = ['z','x','c','v'];
var arr62 = [];
while(arr62.length < arr61.length) {
arr62[arr62.length] = arr61[arr61.length - arr62.length - 1];
};
Способ № 7 — Переворот массива циклом do while
var arr71 = ['z','x','c','v'];
var arr72 = [];
do{arr72[arr72.length] = arr71[arr71.length - arr72.length - 1]}
while(arr72.length < arr71.length);
Способ № 8 — Переворот массива методами «forEach()» и «unshift()«
var arr81 = [1, 2, 3, 4];
var arr82 = [];
arr81.forEach(element => {
arr82.unshift(element)
});
Видео инструкция
В этом видео показан пример переворачивания массива в JavaScript. Ввод команд осуществляется в консоль браузера Google Chrome. Результат виден сразу.
Ссылки
JavaScript | Как перевернуть массив без метода reverse?
Метод Array.prototype.reverse ( )
Стандарт ECMAScript — https://tc39.es/ecma262/#sec-array.prototype.reverse
Стандарт ECMAScript — https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.toreversed