之因此會單獨針對這個api寫這麼一篇博文,一方面是由於最近在一次面試中聊到了這個API,我沒能徹底說出它的用法;另外一方面則是由於經過熟悉後以爲這個api確實很靈活很強大,充分體現了javascript的靈活性。因此寫這麼一篇博文,可讓本身更深入地記住這個方法,也但願能讓更多地同仁用這個方法讓本身的javascript代碼更加簡潔,更加有效率。javascript
MDN Web Docs中對Array.prototype.splice()的描述信息以下前端
splice(start, deleteCount, item1, item2, ...) 方法經過刪除或替換現有元素和/或添加新元素來更改數組的內容。
傳參信息以下java
針對上面的描述,咱們一一驗證它的全部用法。面試
let ary = ['a', 'b', 'c', 'd', 'e', 'f']; ary.splice(1, 1); // 從第二個位置開始刪掉一個元素 console.log(ary); // ['a', 'c', 'd', 'e', 'f']
let ary = ['a', 'b', 'c', 'd', 'e', 'f']; ary.splice(1, 2); // 從第二個位置開始刪掉兩個元素 console.log(ary); // ['a', 'd', 'e', 'f']
let ary = ['a', 'b', 'c', 'd', 'e', 'f']; ary.splice(-2, 1); // 刪掉倒數第二個元素‘e’ console.log(ary); // ['a', 'b', 'c', 'd', 'f']
let ary = ['a', 'b', 'c', 'd', 'e', 'f']; ary.splice(0, ary.length); // 刪掉全部元素 console.log(ary); // []
let ary = ['a', 'b', 'c', 'd', 'e', 'f']; ary.splice(ary.length, 0, 'x'); // 在數組末尾追加一個元素 console.log(ary); // ['a', 'b', 'c', 'd', 'e', 'f', 'x']
let ary = ['a', 'b', 'c', 'd', 'e', 'f']; ary.splice(1, 0, 'x'); // 在數組第二個元素前插入一個元素 console.log(ary); // ['a','x', 'b', 'c', 'd', 'e', 'f']
let ary = ['a', 'b', 'c', 'd', 'e', 'f']; ary.splice(-2, 0, 'x'); // 在數組倒數第二個元素前插入一個元素 console.log(ary); // ['a', 'b', 'c', 'd', 'x', 'e', 'f']
let ary = ['a', 'b', 'c']; let ary2 = ['d', 'e', 'f'] ary.splice(ary.length, 0, ...ary2); // 數組拼接 console.log(ary); // ['a', 'b', 'c', 'd', 'e', 'f']
替換元素其實執行的是先刪除再插入,因此必定要清楚傳入參數的意義
let ary = ['a', 'b', 'c', 'd', 'e', 'f']; ary.splice(1, 1, 'x'); // 替換第二個元素‘b’爲‘x’ (長度和傳入的替換元素個數都爲一) console.log(ary); // ['a', 'x', 'c', 'd', 'e', 'f']
let ary = ['a', 'b', 'c', 'd', 'e', 'f']; ary.splice(1, 2, 'x'); // 刪掉第二個和第三個元素‘b’ ‘c’,插入一個元素‘x’ (長度大於傳入的替換元素個數) console.log(ary); // ['a', 'x', 'd', 'e', 'f']
let ary = ['a', 'b', 'c', 'd', 'e', 'f']; ary.splice(1, 2, 'x', 'y', 'z'); // 刪掉第二個和第三個元素‘b’ ‘c’,插入三個元素‘x’,‘y’, ‘z’ (長度小於傳入的替換元素個數) console.log(ary); // ['a', 'x','y', 'z', 'd', 'e', 'f']
上面這些就是我目前總結的經常使用的splice的用法,若有更多使用方法,歡迎留言討論api