Решён
Как добавить элемент в любое место массива?

Александр В. JavaScript
2.7k
4

Работаю с массивом в JavaScript. Нужно вставить элемент не в конец, а в конкретную позицию (например, на индекс 3). Как это сделать правильно? push() добавляет только в конец, а мне нужно в середину.

Решение
87
Эксперт • 2 ответа

Используй splice():

let arr = [1, 2, 3, 5];
arr.splice(3, 0, 4);
console.log(arr); // [1, 2, 3, 4, 5]

Первый параметр - индекс, второй - сколько удалить (0 если только вставка), третий - что вставить.

Аватар Александр В.

Спасибо, работает! Не знал про третий параметр.

42
Эксперт • 2 ответа

Метод splice() модифицирует исходный массив. Если нужна иммутабельность (например, в React), используй:

const arr = [1, 2, 3, 5];
const newArr = [...arr.slice(0, 3), 4, ...arr.slice(3)];

Это создаст новый массив, не трогая оригинал. Особенно важно при работе со state в компонентах.

5
Эксперт • 1 ответ

можно еще через concat но это костыль

arr = arr.slice(0,3).concat([4], arr.slice(3))

но сплайс конечно удобнее

18
Участник • 1 ответ

Если работаешь с TypeScript и нужна типобезопасность:

function insertAt<T>(arr: T[], index: number, item: T): T[] {
  return [...arr.slice(0, index), item, ...arr.slice(index)];
}

const result = insertAt([1, 2, 3, 5], 3, 4);

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

Написать ответ

Премодерация гостей

Вы отвечаете как гость. Ваш ответ будет скрыт до проверки модератором. Чтобы ответ появился сразу и вы получали репутацию — войдите в аккаунт.

Будьте вежливы и соблюдайте правила платформы.