Рубрики
Без рубрики

Как изменить позицию массива в ванильном javaScript

Вчера я помогал пользователю в Sanity.io, чтобы сделать некоторую миграцию контента, … Tagged с JavaScript, Node, Programming, WebDev.

Я помогал пользователю в Sanity.io Вчера выполняя некоторую миграцию контента, где они хотели взять последний элемент массива и поместить его на первую позицию. Каждый раз, когда у меня есть такой вопрос, мне нравится видеть, удается ли мне решить его, не посещая библиотеки. Оба потому, что я не хочу вводить больше зависимостей для человека с вопросом, но, прежде всего, это возможность для некоторых умственных упражнений.

Итак, как изменить массив, как это:

["Cersei", "Joffrey", "Ilyn", "The Mountain", "The Hound", "Melisandre", "Beric", "Thoros", "Tywin", "Meryn", "Walder"]

к этому?

["Walder", "Cersei", "Joffrey", "Ilyn", "The Mountain", "The Hound", "Melisandre", "Beric", "Thoros", "Tywin", "Meryn"]

Мой первый инстинкт состоял в том, чтобы сделать новый массив, только что нацеленный на последний элемент с длиной списка, вычтенной 1, а затем распространяя остальную часть массива, используя сплайс Анкет Толкайте зеленый запустить кнопка для запуска кода:

Некоторые из вас уже догадаются, почему это плохая идея, и некоторые из вас будут похожи на меня и всегда смешивают сплайс и кусочек . Посмотрим, что происходит с список Когда мы запустить Код выше:

Не идеален (если вы не Арья). Замена сплайс с Среза оставляет оригинальный массив нетронутым и не будет мутировать (что может привести к горе проблем):

Это оставляет нам именно то, что мы хотим.

Еще один способ сделать это – использовать Array.Prototype.Reduce -Мете, который для меня чувствует себя немного чище. Также . Reduce стоит потратить время на обучение.

Это, конечно, можно превратить в функцию. Как бы заманчиво могло бы быть, я не рекомендую использовать Аноним Стрелка ( => ) Функция для этого, так как она не отображается с именем в трассировке стека консоли, если что -то не так происходит:

Теперь я уверен, что есть много более умных способов сделать это. И причина, по которой я пишу это и ставлю это здесь, заключается в том, что я хочу узнать о них.

Как бы вы это решили?

Оригинал: “https://dev.to/kmelve/how-to-shift-array-position-in-vanilla-javascript-59oa”