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

let arr = ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб']

Как проще всего добавить 0 элемент 'вс' в конец массива?

У меня получилось так:

let shiftElem = arr.shift()
arr.push(shiftElem)

Возможно ли сделать проще?


Ответы (3 шт):

Автор решения: UModeL

Самый очевидный и простой вариант:

let arr = ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'];
console.log(arr.concat(arr.splice(0,1)));

→ Ссылка
Автор решения: Qwertiy

В плане простоты кода проще записать это в одну команду:

let arr = ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб']

arr.push(arr.shift())

console.log(arr)

По производительности тоже должно быть довольно хорошо. Единственный вариант, когда это может быть хуже ручного цикла - это если при удалении элемента произойдёт перевыделение памяти, но такая ситуация довольно маловероятна.

PS: Ну и не стоит забывать, что асимптотика всё равно у этого кода линейная.

→ Ссылка
Автор решения: Qwertiy

Если прям очень хочется гарантированно без выделения памяти, то можно сделать так (хотя я бы не стал без данных профилирования):

let arr = ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб']

let x = arr[0]
arr.copyWithin(0, 1)
arr[arr.length - 1] = x

console.log(arr)

→ Ссылка