Я работаю над проектом 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? Есть ли какие-либо крайние случаи или потенциальные ловушки, о которых мне следует знать при использовании этого метода? Как этот подход работает с большими массивами? Будем очень признательны за любые советы или улучшения кода!
Спасибо!
Это можно сделать простой заменой с помощью JavaScript. Вот как.
function swap(array, i, j) {
[array[i], array[j]] = [array[j], array[i]];
}
Посмотрите 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);
Похоже, вы не прочитали весь вопрос.