對于數(shù)組的splice方法如何形象理解

splice本身的詞義我自己的理解就是粘合,把兩樣?xùn)|西拼接在一起。


image.png

所以splice這個方法,我會看成像醫(yī)生拿著手術(shù)刀在對數(shù)組做手術(shù)一樣,尤其是單詞中的p很像手術(shù)刀。

語法層面上講,splice有三個參數(shù),開始位置,長度,和多個需要加入數(shù)組的元素。開始位置必須要有,正著數(shù)從0開始計數(shù),倒著數(shù)從-1開始計數(shù);后面兩個參數(shù)都是可選,長度可以為0,負數(shù)當成0一樣處理。

這三個參數(shù)就像是告訴醫(yī)生,你要從哪個位置開始對數(shù)組切割,切割多長,切割完之后這段位置你還要不要放別的東西進來,結(jié)束后對原數(shù)組縫合,你切割下來的東西我會通過返回值給到你。

所以splice是會改變原數(shù)組的,并且它的返回值就是所謂的 “由被刪除的元素組成的一個數(shù)組。如果沒有刪除元素,則返回空數(shù)組?!?/p>

從例子解讀一下:
1、arr.splice(2)
我的理解:告訴醫(yī)生在下標為2的地方前開始切割(就是下標為2的那個前面的逗號,不是后面的逗號),一直切到最后,也不用放別的東西進來。切下來的東西返回給我。

var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
var removed = myFish.splice(2);

// 運算后的 myFish: ["angel", "clown"]
// 被刪除的元素: ["mandarin", "sturgeon"]

所以:myFish會改變,變成["angel", "clown"],splice返回值是["mandarin", "sturgeon"]

2、arr.splice(-2, 1)
我的理解:倒著數(shù)(下標從1開始記)下標為2的地方前開始切割,切1個長度,也不用替換(不用放別的東西進來)。切下來的東西返回給我。

var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
var removed = myFish.splice(-2, 1);

// 運算后的 myFish: ["angel", "clown", "sturgeon"]
// 被刪除的元素: ["mandarin"]

所以:myFish改變了,變成["angel", "clown", "sturgeon"];splice返回值["mandarin"]

3、arr.splice(0, 2, 'parrot', 'anemone', 'blue')
我的理解:下標為0的地方前開始切割,切2個長度,被切的地方放入'parrot', 'anemone', 'blue',切下來的東西返回給我。

var myFish = ['angel', 'clown', 'trumpet', 'sturgeon'];
var removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue');

// 運算后的 myFish: ["parrot", "anemone", "blue", "trumpet", "sturgeon"]
// 被刪除的元素: ["angel", "clown"]

所以:原數(shù)組被縫合成["parrot", "anemone", "blue", "trumpet", "sturgeon"],splice返回["angel", "clown"]

4、arr.splice(2, 0, "drum")
我的理解:下標為2的地方前開始切割,切0個長度,那就是不操作到后面的元素,在這里切斷就可以了,被切斷的地方放入'drum',切下來的東西返回給我,沒有就是空數(shù)組。

var myFish = ["angel", "clown", "mandarin", "sturgeon"];
var removed = myFish.splice(2, 0, "drum");

// 運算后的 myFish: ["angel", "clown", "drum", "mandarin", "sturgeon"]
// 被刪除的元素: [], 沒有元素被刪除

所以:原數(shù)組表現(xiàn)出來像是新增,本質(zhì)還是切割放入。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容