I Shar

I Shar

мир глазами веб-разработчика

Как сделать реверс массива на JavaScript

Как решить проблему реверса элементов массива в JavaScript?

I Shar

время чтения 2 мин.

Сегодня я хочу обсудит вопрос реверса элементов массива в JavaScript. Какой вариант Вы захотите предложить в первую очередь? Естественно, использование метода массивов reverse().

const originalArray = ['a', 'b', 'c'];
const reverseArray = originalArray.reverse();
console.log(reverseArray);
// ['c', 'b', 'a']

В этом случае возникает проблема, решение которой ищут многие начинающие разработчики. Эта проблема настолько распространена в JavaScript, что рано или поздно Вы неизбежно с ней столкнетесь или уже столкнулись.

Изменение оригинального массива

Именно так, использование метода reverse() приводит к модификации исходного массива.

const originalArray = ['a', 'b', 'c'];
const newArray = originalArray.reverse();
console.log(originalArray); // ['c', 'b', 'a']
console.log(newArray); // ['c', 'b', 'a']

Как сделать реверс элементов массива без изменения оригинальных данных

Ниже я предлагаю несколько способов решения проблемы модификации оригинального массива.

Использование slice и reverse

const originalArray = ['a', 'b', 'c'];
const newArray = originalArray.slice().reverse();
console.log(originalArray); // ['a', 'b', 'c']
console.log(newArray); // [ 'c', 'b', 'a' ]

Использование spread и reverse

const originalArray = ['a', 'b', 'c'];
const newArray = [...originalArray].reverse();
console.log(originalArray); // ['a', 'b', 'c']
console.log(newArray); // [ 'c', 'b', 'a' ]

Использование reduce и spread

const originalArray = ['a', 'b', 'c'];
const newArray = originalArray.reduce((accumulator, value) => {
  return [value, ...accumulator]
}, []);
console.log(originalArray); // ['a', 'b', 'c']
console.log(newArray); // [ 'c', 'b', 'a' ]

Использование reduceRight и spread

const originalArray = ['a', 'b', 'c'];
const newArray = originalArray.reduceRight((accumulator, value) => {
  console.log(value);
  return [...accumulator, value]
}, []);
console.log(originalArray); // ['a', 'b', 'c']
console.log(newArray); // [ 'c', 'b', 'a' ]

Использование push

const originalArray = ['a', 'b', 'c'];
const newArray = originalArray.reduceRight((accumulator, value) => {
  accumulator.push(value);
  return accumulator;
}, []);
console.log(originalArray); // ['a', 'b', 'c']
console.log(newArray); // [ 'c', 'b', 'a' ]


Спасибо за внимание.


Перевод статьи Samantha Ming “Code Recipe: How to Reverse an Array in JavaScript”

    • frontend
    • js

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.