В тази статия ще научим няколко начина за лесна размяна на стойностите на два елемента от масив в JavaScript.
1. Временна променлива
За да размените два елемента от масив в JavaScript:
- Създайте временна променлива за съхраняване на стойността на първия елемент.
- Задайте на първия елемент стойността на втория елемент.
- Задайте втория елемент на стойност във временната променлива.
Например:
function swapElements(arr, i1, i2) { // Step 1 let temp = arr[i1];
// Step 2 arr[i1] = arr[i2];
// Step 3 arr[i2] = temp; }
const arr = [1, 2, 3, 4];
swapElements(arr, 0, 3);
console.log(arr); // [ 4, 2, 3, 1 ]
2. Задание за деструктуриране на масив
За да размените два елемента от масив с този метод:
- Създайте нов масив, съдържащ двата елемента в определен ред.
- Използвайте синтаксиса за унищожаване на масив на JavaScript, за да разопаковате стойностите от масива в нов масив, който съдържа и двата елемента в обратен ред.
С този метод можем да създадем кратък „един ред“, за да свършим работата.
function swapElements(arr, i1, i2) { [arr[i1], arr[i2]] = [arr[i2], arr[i1]]; }
const arr = [1, 2, 3, 4];
swapElements(arr, 0, 3);
console.log(arr); // [ 4, 2, 3, 1 ]
3. Метод Array splice().
Алтернативен подход за размяна на два елемента от масив е използването на метода splice()
, като този:
function swapElements(arr, i1, i2) { arr[i1] = arr.splice(i2, 1, arr[i1])[0]; }
const arr = [1, 2, 3, 4];
swapElements(arr, 0, 3);
console.log(arr); // [ 4, 2, 3, 1 ]
Методът Array
splice()
променя съдържанието на масив чрез премахване на съществуващи елементи, като същевременно евентуално добавя нови елементи на тяхно място.
const arr1 = ['a', 'b', 'c'];
// Removing elements arr1.splice(1, 2); console.log(arr1); // [ 'a' ]
// Removing and adding new elements const arr2 = ['a', 'b', 'c']; arr2.splice(1, 2, 'd', 'e'); console.log(arr2); // [ 'a', 'd', 'e' ]
За да разменим елементите на масива, ние задаваме определени аргументи за три от параметрите, които splice()
има:
start
: Това указва индекса, от който да започне промяната на масива. Използваме индекса на втория елемент за това като аргумент за параметъра.deleteCount
: Това е число, което показва броя на елементите за премахване отstart
. Нашето предаване на1
означава, че ще бъде премахнат само елементът с индексstart
(вторият елемент, който трябва да бъде разменен).item1
, ...,itemN
: Това са променлив брой аргументи за добавяне към масива. Предаваме само една стойност за това - първият елемент, който трябва да бъде разменен.
Така че трите аргумента, които предаваме на splice()
, заместват първия елемент с втория.
За да завършим размяната, ние се възползваме от факта, че splice()
връща масив, съдържащ премахнати елементи.
const arr2 = ['a', 'b', 'c'];
const removed = arr2.splice(1, 2, 'd', 'e');
console.log(removed); // [ 'b', 'c' ] console.log(arr2); // [ 'a', 'd', 'e' ]
Следователно за нашия сценарий вторият елемент, който ще бъде разменен, ще бъде в този масив, така че ние осъществяваме достъп до него от масива и присвояваме неговата стойност на първия елемент.
Първоначално публикувано на: codingbeautydev.com
Всяко лудо нещо, което прави JavaScript
Завладяващо ръководство за фините предупреждения и по-малко известни части на JavaScript.
Регистрирайте се и получете безплатно копие веднага.