js中自带的api——splice虽然可以实现插入,但是结果会影响到原有的数组,在 react 的reducer中就不能直接对state中的数组这么操作(保证纯函数的原则)。
因此可以借助 concat 和 slice 的 api 实现不影响原有数组内容的插入操作。
Array.prototype.insertArray = function (index, insertArr) {
var a = [...this];
if(index > a.length) {
a = a.concat(new Array(index-this.length));
}
return a.slice( 0, index ).concat( insertArr ).concat( this.slice( index ) );
}
var a1 = [1,2,3,4,5];
var a2 = [100,100];
var result = a1.insertArray( 33, a2 );
console.log("result", result)
运行结果