Как переместить элемент внутри массива в JavaScript?

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

let array = [ 'a', 'b', 'c', 'd', 'e' ];
I

Если я хочу переместить элемент с индексом 1 («b») в индекс 3, результирующий массив должен быть:

// Ожидаемый результат

[ 'a', 'c', 'd', 'b', 'e' ]

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

function moveElement(array, fromIndex, toIndex) {
    const element = array.splice(fromIndex, 1)[0];
    array.splice(toIndex, 0, element);
    return array;
}

// Example usage:
let arr = [ 'a', 'b', 'c', 'd', 'e' ];
let result = moveElement(arr, 1, 3);
console.info(result); // Output: [ 'a', 'c', 'd', 'b', 'e' ]

Хороший ли это подход для перемещения элементов внутри массива или есть более эффективный или идиоматический способ добиться этого в JavaScript? Есть ли какие-либо крайние случаи или потенциальные ловушки, о которых мне следует знать при использовании этого метода? Как этот подход работает с большими массивами? Будем очень признательны за любые советы или улучшения кода!

Спасибо!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
55
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это можно сделать простой заменой с помощью JavaScript. Вот как.

function swap(array, i, j) {
  [array[i], array[j]] = [array[j], array[i]];
}

Похоже, вы не прочитали весь вопрос.

trincot 25.05.2024 21:12
Ответ принят как подходящий

Посмотрите Array.prototype.copyWithin(). Пример:

let a = ['a','b','c','d','e'];
const from_idx = 1, to_idx = 3, elem = a[from_idx];
a.copyWithin(from_idx,from_idx+1,to_idx+1)[to_idx]=elem;
console.info(a);

Другие вопросы по теме