摘要:大于數(shù)組長度,不報錯,但是不會刪除當前數(shù)組的元素,第二個參數(shù)無效。大于并且小于指定位置到數(shù)組最后一個元素的長度,則刪除指定長度的元素。針對上面的描述,我們一一驗證它的所有用法。
之所以會多帶帶針對這個api寫這么一篇博文,一方面是因為最近在一次面試中聊到了這個API,我沒能完全說出它的用法;另一方面則是因為通過熟悉后覺得這個api確實很靈活很強大,充分體現(xiàn)了javascript的靈活性。所以寫這么一篇博文,可以讓自己更深刻地記住這個方法,也希望能讓更多地同仁用這個方法讓自己的javascript代碼更加簡潔,更加有效率。
MDN Web Docs中對Array.prototype.splice()的描述信息如下
splice(start, deleteCount, item1, item2, ...) 方法通過刪除或替換現(xiàn)有元素和/或添加新元素來更改數(shù)組的內(nèi)容。
傳參信息如下
1. start 從什么位置開始修改當前數(shù)組,這個參數(shù)有如下幾種情況0到數(shù)組長度-1,即當前數(shù)組的任意位置。
大于數(shù)組長度-1,不報錯,但是不會刪除當前數(shù)組的元素,第二個參數(shù)無效。但是,如果這個時候傳入了第三個,以及第四個。。。參數(shù),那么,這些參數(shù)值會被添加到數(shù)組的末尾位置,也就類似于push方法。
小于0,如果開始位置為負數(shù),會從數(shù)組的末尾倒著查找,如,-1為最后一個元素,-2為倒數(shù)第二個元素。
2. deleteCount 要刪除的內(nèi)容的長度,這個參數(shù)有如下幾種情況0或負數(shù) 不刪除數(shù)組元素。
大于0并且小于start指定位置到數(shù)組最后一個元素的長度,則刪除指定長度的元素。
大于start指定位置到數(shù)組最后一個元素的長度,刪除從start位置后面所有的元素,如splice(0, 99999999)會晴空長度小于99999999的數(shù)組
3. 在start位置開始要添加或者替換的元素,可以有多個。針對上面的描述,我們一一驗證它的所有用法。
刪除元素(第二個參數(shù)不為0,后續(xù)參數(shù)不傳入,只刪除)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); // 刪掉倒數(shù)第二個元素‘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); // []添加元素(第二個參數(shù)為0,后續(xù)參數(shù)不為空,則只增加不刪除)
let ary = ["a", "b", "c", "d", "e", "f"]; ary.splice(ary.length, 0, "x"); // 在數(shù)組末尾追加一個元素 console.log(ary); // ["a", "b", "c", "d", "e", "f", "x"]
let ary = ["a", "b", "c", "d", "e", "f"]; ary.splice(1, 0, "x"); // 在數(shù)組第二個元素前插入一個元素 console.log(ary); // ["a","x", "b", "c", "d", "e", "f"]
let ary = ["a", "b", "c", "d", "e", "f"]; ary.splice(-2, 0, "x"); // 在數(shù)組倒數(shù)第二個元素前插入一個元素 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); // 數(shù)組拼接 console.log(ary); // ["a", "b", "c", "d", "e", "f"]更新/替換元素(第二個參數(shù)不為0,后續(xù)參數(shù)不為空,這里需要注意的是,傳入的替換元素的個數(shù)可以等于前面的長度,也可以不等于前端的長度)
替換元素其實執(zhí)行的是先刪除再插入,所以一定要清楚傳入?yún)?shù)的意義
let ary = ["a", "b", "c", "d", "e", "f"]; ary.splice(1, 1, "x"); // 替換第二個元素‘b’為‘x’ (長度和傳入的替換元素個數(shù)都為一) 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’ (長度大于傳入的替換元素個數(shù)) 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’ (長度小于傳入的替換元素個數(shù)) console.log(ary); // ["a", "x","y", "z", "d", "e", "f"]
上面這些就是我目前總結(jié)的常用的splice的用法,如有更多使用方法,歡迎留言討論
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/101325.html
摘要:于是我就先把這本薄的經(jīng)典書語言精粹修訂版豆瓣讀書本書簡介總共章,除去附錄,才頁,讀完并記錄了一些筆記。讀書筆記還可以分享給別人看。編程語言第版定義了的標準。程序檢查時丟棄值為函數(shù)的屬性。 之前看到這篇文章,前端網(wǎng)老姚淺談:怎么學JavaScript?,說到怎么學習JavaScript,那就是看書、分析源碼。10本書讀2遍的好處,應該大于一本書讀20遍??磿鲃訉W習,看視頻是被動學習。看...
摘要:在客戶端中,一些方法等也返回類數(shù)組對象。對象接下來重點講講對象。在函數(shù)體中,指代該函數(shù)的對象。下一篇文章深入之創(chuàng)建對象的多種方式以及優(yōu)缺點深入系列深入系列目錄地址。 JavaScript深入系列第十三篇,講解類數(shù)組對象與對象的相似與差異以及arguments的注意要點 類數(shù)組對象 所謂的類數(shù)組對象: 擁有一個 length 屬性和若干索引屬性的對象 舉個例子: var array = ...
摘要:關于我的博客掘金專欄路易斯專欄原文鏈接深度長文數(shù)組全解密全文共字,系統(tǒng)講解了數(shù)組的各種特性和。構(gòu)造器構(gòu)造器用于創(chuàng)建一個新的數(shù)組。中聲明的數(shù)組,它的構(gòu)造函數(shù)是中的對象。 本文首發(fā)于CSDN網(wǎng)站,下面的版本又經(jīng)過進一步的修訂。 關于 我的博客:louis blog 掘金專欄:路易斯專欄 原文鏈接:【深度長文】JavaScript數(shù)組全解密 全文共13k+字,系統(tǒng)講解了JavaScrip...
摘要:對象方法數(shù)組創(chuàng)建與修改創(chuàng)建創(chuàng)建一個新數(shù)組實例將類數(shù)組類似數(shù)組的對象和可遍歷的對象轉(zhuǎn)為真正的數(shù)組。返回一個新的對象,該對象包含數(shù)組每個索引的值。遍歷鍵遍歷值遍歷鍵值對參考文檔標準庫對象 Array 對象方法 數(shù)組創(chuàng)建與修改 1. 創(chuàng)建 var arr = []; var arr = new Array() Array.of(el1[,el2[...]]) //創(chuàng)建一個新數(shù)組實例 Ar...
閱讀 3636·2021-11-23 09:51
閱讀 1984·2021-11-16 11:42
閱讀 3208·2021-11-08 13:20
閱讀 1094·2019-08-30 15:55
閱讀 2200·2019-08-30 10:59
閱讀 1231·2019-08-29 14:04
閱讀 1009·2019-08-29 12:41
閱讀 1980·2019-08-26 12:22