Автор оригинала: FreeCodeCamp Community Member.
Реверсирование массива с определенными ограничениями является одной из наиболее распространенных проблем, которые вы найдете в собеседованиях и кодировке.
Этот учебник покажет вам пять способы изменить массив в JavaScript с и без Обратный
Метод вместе с фрагментами кода, которые вы можете использовать.
Как поменять массив в JavaScript с обратным способом
Когда вам нужно перевернуть массив в JavaScript, вы можете использовать Обратный
Метод, который сначала поставит последний элемент и первый элемент последний:
let numbers = [1, 2, 3, 4, 5]; let reversedNumbers = numbers.reverse(); console.log(reversedNumbers); // [5, 4, 3, 2, 1]
Но имейте в виду, что Обратный
Метод также изменит исходный массив:
let numbers = [1, 2, 3, 4, 5]; let reversedNumbers = numbers.reverse(); console.log(reversedNumbers); // [5, 4, 3, 2, 1] console.log(numbers); // [5, 4, 3, 2, 1]
Некоторые вызовы кодирования могут захотеть вас сохранить оригинальный массив, поэтому давайте посмотрим на то, как вы можете поменять массив без изменения оригинала.
Как поменять массив в JavaScript с оператором по распространению
Вы можете использовать комбинацию Распространение оператора и Обратный
Способ для изменения массива без изменения оригинала.
Во-первых, вы поместите элементы, возвращаемые из оператора SPRECT, в новый массив, включив синтаксис спред с квадратными кронштейнами []
:
[...numbers]
Тогда вы называете Обратный
Способ на массиве. Таким образом, Обратный
Метод будет выполнен на новом массиве вместо оригинала:
let numbers = [1, 2, 3, 4, 5]; let reversedNumbers = [...numbers].reverse(); console.log(reversedNumbers); // [5, 4, 3, 2, 1] console.log(numbers); // [1, 2, 3, 4, 5]
Примечание: Распространение
Метод представляет собой синтаксис ES6. Когда вам необходимо поддержать более старые браузеры или вы хотите использовать синтаксис ES5, вы можете комбинировать ломтик
и Обратный
методы. Давайте посмотрим на это сейчас.
Как поменять массив в JavaScript с ломтиками и обратными способами
ломтик
Метод используется для возврата выбранных элементов в качестве нового массива. Когда вы вызываете метод без какого-либо аргумента, он вернет новый массив, который идентичен исходному (от первого элемента до последнего).
Далее вы называете Обратный
Способ в недавно возвращенном массиве. Вот почему оригинальный массив не изменен:
let numbers = [1, 2, 3, 4, 5]; let reversedNumbers = numbers.slice().reverse(); console.log(reversedNumbers); // [5, 4, 3, 2, 1] console.log(numbers); // [1, 2, 3, 4, 5]
Как поменять массив в JavaScript без обратного метода
Иногда собеседование на работе бросит вызов вам поменять массив без Обратный
метод. Без проблем! Вы можете использовать комбинацию А для
петля и массив толчок
Метод в примере ниже:
let numbers = [1, 2, 3, 4, 5]; let reversedNumbers = []; for(let i = numbers.length -1; i >= 0; i--) { reversedNumbers.push(numbers[i]); } console.log(reversedNumbers);
Как написать свою собственную обратную работу в JS
Наконец, скажем, вам поручено написать свою собственную обратную функцию, которая должна поменять массив без создания копии. Это может показаться усложненным сначала, но не волнуйтесь, потому что это на самом деле довольно легко.
Что вам нужно сделать, состоит в том, чтобы поменять первые и последние элементы массива, а затем второй и второй к последним элементам, и так далее, пока вы не поменялись всему элементы.
Давайте напишем функцию, чтобы сделать только что.
Написать функцию Usshreverse
и хранить как первый индекс в 0
и последний индекс, использующий Array.Length - 1
как переменные.
function customReverse(originalArray) { let leftIndex = 0; let rightIndex = originalArray.length - 1; }
Далее, создайте А в то время как
петля который работает до тех пор, пока leftindex
меньше, чем rightindex
Отказ
Внутри этой петли поменяйте значением leftindex
и rightindex
Отказ Вы можете временное хранить одну из значений во временной переменной:
while (leftIndex < rightIndex) { // Swap the elements let temp = originalArray[leftIndex]; originalArray[leftIndex] = originalArray[rightIndex]; originalArray[rightIndex] = temp; }
Наконец, переместите leftindex
вверх и rightindex
вниз. Когда в то время как
Структура повторяется, он поменятся во второй и второй к последнему элементам, и так далее:
function customReverse(originalArray) { let leftIndex = 0; let rightIndex = originalArray.length - 1; while (leftIndex < rightIndex) { // Swap the elements with temp variable let temp = originalArray[leftIndex]; originalArray[leftIndex] = originalArray[rightIndex]; originalArray[rightIndex] = temp; // Move indices to the middle leftIndex++; rightIndex--; } }
Цикл остановится прямо, когда нет больше элементов, чтобы поменять. Для нечетных массивов, значение leftindex
и rightindex
будет равным, поэтому больше не замена. Для даже размером, leftindex
будет больше, чем rightindex
Отказ
Вы можете проверить функцию, чтобы увидеть, работает ли она правильно так:
let myArray = [1, 2, 3, 4, 5]; customReverse(myArray); console.log(myArray); // output is [5, 4, 3, 2, 1]
Заключение
Поздравляю! Вы узнали не только как поменять массив в JavaScript, но и как написать свою собственную обратную функцию.
Вот еще несколько учебных пособий JavaScript, которые вас могут быть заинтересованы в: