@Vovasab

Как поменять элементы в массиве?

Дан массив [1, 2, 3, 4, 5, 6, 7, 8 ,9 ,10 ,11 ,12], нужно поменять местами 3 -> 6, 8 -> 12, 10 -> 5. Как это можно воплотить?
  • Вопрос задан
  • 24706 просмотров
Решения вопроса 3
sfi0zy
@sfi0zy Куратор тега JavaScript
Creative frontend developer
Сделать можно тысячей способов, например так:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];

[arr[2], arr[5]]  = [arr[5], arr[2]];
[arr[7], arr[11]] = [arr[11], arr[7]];
[arr[4], arr[9]]  = [arr[9], arr[4]];

console.log(arr); // [1, 2, 6, 4, 10, 3, 7, 12, 9, 5, 11, 8]
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
// меняет два элемента массива in-place
function swap(arr, a, b) {
  arr[a] = arr.splice(b, 1, arr[a])[0];
}

const Twelve = [1, 2, 3, 4, 5, 6, 7, 8 ,9 ,10 ,11 ,12];
swap( Twelve, 2, 5); // индексы считаются от 0
swap( Twelve, 7, 11);
swap( Twelve, 9, 4);

Twelve //  [1,2,6,4,10,3,7,12,9,5,11,8]
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега JavaScript
const arr = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ];

[
  [ 3, 6 ],
  [ 8, 12 ],
  [ 5, 10 ]
].forEach(([ a, b ]) => {
  const ia = arr.indexOf(a);
  const ib = arr.indexOf(b);

  if (ia !== -1 && ib !== -1) {
    [ arr[ia], arr[ib] ] = [ arr[ib], arr[ia] ];
  }
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы