這個想法是在一個面試題中看到的:面試
題目是這樣的: 數組
// 一個數組,在指定的index 位置插入一個元素,返回一個新的數組,不改變原來的數組 <script> function insert(arr, item, index) { var newArr = arr.concat() for (var i = 0; i < newArr.length; i++) { if (index > 0) { if (i === index) { newArr.splice(i,0,item) } } } return newArr } document.write(insert([1,2,3,4,5,5],2,2)) </script>
當你遇到這問題:如何處理呢?spa
在解決這個問題以前,我還不知道數組中的splice方法能夠插入一個元素,一直認爲splice方法只能夠刪除一個數組的元素!!! 既然這樣,那麼廢話很少說,介紹介紹splice的用法吧。code
-----------------------------------------------------分割線------------------------------------------------------------------------------對象
splice的用法:blog
splice() 方法經過刪除或替換現有的元素或者原地添加新的元素來修改數組並以數組的形式返回被修改的內容。此方法會改變願數組,。索引
具體三個參數以下:ip
start
array.length-n
);若是負數的絕對值大於數組的長度,則表示開始位置爲第0位。
deleteCount
可選
deleteCount
大於
start
以後的元素的總數,則從
start
後面的元素都將被刪除(含第
start
位)。
deleteCount
被省略了,或者它的值大於等於
array.length - start
(也就是說,若是它大於或者等於
start
以後的全部元素的數量),那麼
start
以後數組的全部元素都會被刪除。
deleteCount
是 0 或者負數,則不移除元素。這種狀況下,至少應添加一個新元素。
item1, item2, ...
可選
start
位置開始。若是不指定,則
splice()
將只刪除數組元素。
1 var arr = [1,2,2,3,4,5] 2 arr.splice(1,1) // 第一個參數表示index (索引) 第二個參數表示從這個索引開始,從左往右要刪除的長度 。 3 // 返回的結果是 [2] 改變原來的數組 4 // 最終arr = [1,2,3,4,5]
示例:splice() 方式添加數組 it
var arr = [1,2,2,3,4,5] arr.splice(2,0,4) // 第一個參數表示index(索引) 第二個參數要移除的個數, 第三個參數表示要添加的元素 // 返回的結果爲空, 改變原來的數組 // 最終 arr = [1,2,4,2,3,4,5]
總結感悟: 原生js中的內置對象很是有用,咱們必須努力掌握好!~ 否則像我同樣這個簡單的題目的忘記來!記住splice()方法後,即可以輕易的解決掉這個問題啦~~~io