В тази статия ще научим няколко начина за лесна размяна на стойностите на два елемента от масив в JavaScript.

1. Временна променлива

За да размените два елемента от масив в JavaScript:

  1. Създайте временна променлива за съхраняване на стойността на първия елемент.
  2. Задайте на първия елемент стойността на втория елемент.
  3. Задайте втория елемент на стойност във временната променлива.

Например:

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. Задание за деструктуриране на масив

За да размените два елемента от масив с този метод:

  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() има:

  1. start: Това указва индекса, от който да започне промяната на масива. Използваме индекса на втория елемент за това като аргумент за параметъра.
  2. deleteCount: Това е число, което показва броя на елементите за премахване от start. Нашето предаване на 1 означава, че ще бъде премахнат само елементът с индекс start (вторият елемент, който трябва да бъде разменен).
  3. 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.

Регистрирайте се и получете безплатно копие веднага.