向陣列中插入另一個數組
阿新 • • 發佈:2018-11-26
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);