js刪除陣列元素方法 總結
阿新 • • 發佈:2019-01-31
方法一:delete arr[x]
用delete刪除後,陣列的長度length不會發生變化,此時arr[x]變為undefined。
好處:delete arr[x]後陣列的索引保持不變。
var arr = [1,true,{},"a"];
delete arr[0];
/*輸出*/
console.log("delete後 陣列的長度:" + arr.length);
console.log("arr[0]:" +arr[0]);
輸出結果:
方法二:arr.splice(start,delete_length)
相比於方法一,這種方式陣列長度相應改變,但是原來的索引也相應改變。
splice()刪除後返回的是刪除的元素。
另外splice()還可以新增,替換陣列元素。
var arr = [1,true,{},"a"];
var a = arr.splice(0,2);
/*輸出*/
console.log("刪除後 陣列的長度:" + arr.length);
console.log("此時arr[1]:" + arr[1]);
console.log("a:" +a);
輸出結果:
方法三:用slice()和concat()組合實現
Array.prototype.del=function(n) { //n表示第幾項,從0開始算起。
//prototype為物件原型,注意這裡為物件增加自定義方法的方法。
if(n<0) //如果n<0,則不進行任何操作。
return this;
else
return this.slice(0,n).concat(this.slice(n+1,this.length));
/*
concat方法:返回一個新陣列,這個新陣列是由兩個或更多陣列組合而成的。
這裡就是返回this.slice(0,n)/this.slice(n+1,this.length)
組成的新陣列,這中間,剛好少了第n項。
slice方法: 返回一個數組的一段,兩個引數,分別指定開始和結束的位置。
*/
}
//我們來試一試這個自己增加的方法
var test=new Array(0,1,2 ,3,4,5);
test=test.del(3); //從0算起,這裡也就是刪除第4項。
alert(test); //0,1,2,4,5
方法四:其他
我們還可以用pop()、shift()等js模擬堆疊佇列的方法,缺點很明顯,這裡不多介紹。
當然還有其他,今天就想到這裡。