1. 程式人生 > >js刪除陣列元素方法 總結

js刪除陣列元素方法 總結

方法一: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模擬堆疊佇列的方法,缺點很明顯,這裡不多介紹。
當然還有其他,今天就想到這裡。