Попробуйте
arr.splice(insertAt,5, ...arrB)
let arr = new Array(25);
console.log(arr);
let arrB = Array(5).fill(1);
let insertAt = 5;
arr.splice(insertAt,5, ...arrB)
console.log(arr);
После Документация MDN Метод splice () изменяет содержимое массива путем удаления или замены существующих элементов и / или добавления новых элементов.синтаксис: arr.splice(start[, deleteCount[, item1[, item2[, ...]]]])
.Пример использования в приведенном выше фрагменте
ОБНОВЛЕНИЕ
Действительно, сращивание является стандартным способом, но медленнее, чем для цикла - я выполняю тест, чтобы проверить его ЗДЕСЬ .Splice на ~ 28% медленнее, чем цикл for.
Если ваш массив содержит числа с плавающей запятой, вы можете использовать Float32Array или Uint32array , что почти в 2 раза быстрее, чем Array
(сращивание не поддерживается для Chrome)
let arr = new Float32Array(25);
console.log(arr);
let arrB = new Float32Array(5).fill(1);
let insertAt = 5;
for(let ix = 0; ix < arrB.length; ix++)
arr[ix + insertAt] = arrB[ix];
console.log(arr);
ОБНОВЛЕНИЕ 2
Я прочитал вам ответ и произвел сравнение с Uint32Array
(в случае, если вы хотите использовать массив сцелые числа) - это в 2 раза быстрее обычного массива - здесь .
Uint32Array.prototype.copyInto = function(arr,ix = 0) {
for(let i = 0; i < arr.length; i++)
this[ix+i] = arr[i];
return this;
}
let a = new Uint32Array(2).fill(1);
let x = new Uint32Array(5).fill(0).copyInto(a,2);
console.log(x);