arr1 = ['a', 'b', 'c']
arr2 = ['1', '2', '3']
把數組arr2插入數組arr1的第二個元素b后面;
思路:
插入特定的位置,我們首先會想到splice,但是又不能直接splice(2, 0, arr2),這樣的結果:['a', 'b', ['1', '2', '3'], 'c'];
那我們怎么能把arr2的元素一個一個的splice到arr1中呢,有沒有簡單的方式呢?
答案是肯定,有一個神奇的函數call、apply,(調用一個函數的方法用在另一個函數上)
apply的參數:第一個為所用在的函數,第二個為一個數組,
所以我們要把arr2 變成一個適合splice的數組(包含splice前2個參數的數組)
在arr2前面插入2個元素:splice前2個參數(開始位置,刪除幾個元素)
然后把Array的splice方法指向arr1,最重要的是把新得到的arr2整個數組做為參數傳給arr1!
這樣就完成了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);
