问题:
arr1 = ['a', 'b', 'c']
arr2 = ['1', '2', '3']
把数组arr2插入数组arr1的第二个元素b后面;
思路:
插入特定的位置,我们首先会想到splice,
splice用法如下。index是索引,howmany是删除多少个元素,后面的item是插入的元素
arrayObject.splice(index,howmany,item1,.....,itemX)
直接splice(2, 0, arr2),但是结果:['a', 'b', ['1', '2', '3'], 'c'];
我们可以用Fuction原型链上的方法用函数apply(可以改变this的指向)
实现:只需要两步:
1.我们要把arr2 变成一个适合splice的数组(包含splice前2个参数的数组) :在arr2前面插入2个元素:splice前2个参数(开始位置,删除几个元素) 2.把新得到的arr2整个数组做为参数传给arr1。
var arr1 = ['a', 'b', 'c'];
var arr2 = ['1', '2', '3'];
// 把arr2 变成一个适合splice的数组(包含splice前2个参数的数组)
arr2.unshift(2, 0);
Array.prototype.splice.apply(arr1, arr2);
console.log(arr1);
//["a", "b", "1", "2", "3", "c"]
上面的代码相当于
var arr1 = ['a', 'b', 'c'];
var arr2 = ['1', '2', '3'];
arr1.splice(2,0,'1','2','3')
console.log(arr1)
//["a", "b", "1", "2", "3", "c"]