在之前的文章《JS數(shù)組學(xué)習(xí)之怎么去除頭部或尾部元素》中,我們介紹了刪除數(shù)組開(kāi)頭或者末尾元素的方法。下面我們繼續(xù)JavaScript數(shù)組的學(xué)習(xí)和練習(xí),來(lái)看看如何根據(jù)數(shù)組下標(biāo)刪除任意元素,感興趣的朋友可以學(xué)習(xí)了解一下~
我們都知道數(shù)組中的每個(gè)元素都有一個(gè)序號(hào),這個(gè)序號(hào)從0開(kāi)始,被稱(chēng)為下標(biāo)(Index)。根據(jù)這個(gè)數(shù)組下標(biāo),我們可以使用 數(shù)組名[下標(biāo)]
的形式來(lái)訪問(wèn)指定下標(biāo)的元素。
訪問(wèn)到指定元素后,就可以利用 delete
運(yùn)算符 來(lái)刪除該元素,但數(shù)組長(zhǎng)度不會(huì)發(fā)生改變;刪除后的該元素會(huì)變?yōu)榭瘴辉兀?/p>
var arr=new Array("香蕉","蘋(píng)果","梨子","橙子","橘子","榴蓮"); console.log(arr); delete arr[1]; //刪除下標(biāo)為1的元素(第二個(gè)元素) console.log(arr);
空位元素可以讀寫(xiě),length 屬性不排斥空位,空元素位返回值為 undefined
console.log(arr[1]);
說(shuō)明:空元素與元素的值為 undefined 是兩個(gè)不同的概念,即使空元素的返回值也是 undefined。JavaScript 在初始化數(shù)組時(shí),只有真正存儲(chǔ)有值得元素才可以分配內(nèi)存。
利用delete運(yùn)算符一次只能刪除一個(gè)數(shù)組元素,且因?yàn)椴桓淖償?shù)組長(zhǎng)度,我們就無(wú)法通過(guò)length屬性來(lái)觀察這個(gè)數(shù)組的變化了。那么如果想要在指定下標(biāo)位置刪除一個(gè)或多個(gè)元素,且是真正的刪除這些元素,數(shù)組長(zhǎng)度要有改變,這要怎么做呢?
可以使用 splice() 方法。之前就說(shuō)過(guò)了splice() 是一個(gè)強(qiáng)大的方法,我們已經(jīng)了解了怎么使用它來(lái)插入元素,這次來(lái)了解一下怎么使用splice()來(lái)在指定下標(biāo)位置刪除一個(gè)或多個(gè)元素。
刪除元素的語(yǔ)法:
array.splice(index,howmany)
-
第1個(gè)參數(shù)
index
可以指定起始下標(biāo)位置(即開(kāi)始刪除元素的位置); -
第2個(gè)參數(shù)
howmany
指定應(yīng)該刪除的元素?cái)?shù)目(即需要?jiǎng)h除的一個(gè)或多個(gè)元素)。
我們通過(guò)下面的例子來(lái)具體看看:
var arr= [1,2,3,4,5]; console.log(arr); arr.splice(1,2); console.log(arr);
可以看出:使用arr.splice(1,2)
從下標(biāo)1的位置(數(shù)組第2個(gè)元素)開(kāi)始刪除2個(gè)元素,也就是刪除了arr[1]
和arr[2]
,因此輸出結(jié)果為:
利用splice() 方法我們也可以實(shí)現(xiàn)在數(shù)組開(kāi)頭和末尾刪除元素的操作:
-
如果想要在數(shù)組開(kāi)頭刪除元素,就設(shè)置該方法第1個(gè)參數(shù)index的值為0即可
var arr= [1,2,3,4,5]; console.log(arr); arr.splice(0,2); console.log(arr);
-
如果想要在數(shù)組末尾刪除元素,就設(shè)置該方法第1個(gè)參數(shù)index的值為負(fù)數(shù),那么就會(huì)按絕對(duì)值從數(shù)組右側(cè)開(kāi)始向左側(cè)定位;且第2個(gè)參數(shù) howmany的值要 等于 index的值。
var arr= [1,2,3,4,5]; console.log(arr); //從倒數(shù)第二個(gè)元素開(kāi)始,截取兩個(gè)元素 arr.splice(-2,2); console.log(arr);
好了,就說(shuō)到這里了,有需要的可以看:javascript高級(jí)教程