刪除指定元素:javascript
首先能夠給JS的數組對象定義一個函數,用於查找指定的元素在數組中的位置,即索引,代碼爲:java
Array.prototype.indexOf = function(val) { for (var i = 0; i < this.length; i++) { if (this[i] == val) return i; } return -1; };
而後使用經過獲得這個元素的索引,使用js數組本身固有的函數去刪除這個元素:
代碼爲:數組
Array.prototype.remove = function(val) { var index = this.indexOf(val); if (index > -1) { this.splice(index, 1); } };
這樣就構造了這樣一個函數,好比我有有一個數組:函數
var emp = ['abs','dsf','sdf','fd']
假如咱們要刪除其中的fd,就可使用:this
emp.remove('fd');
刪除指定下標的元素:spa
1.原生的delete 函數:prototype
delete方法:delete arr[1] 表示從數組中刪除索引爲1的元素,注意該方法在刪除數組中元素的時候,這種方式數組長度不變,此時arr[1]變爲undefined了,可是也有好處原來數組的索引也保持不變,code
代碼:對象
var arr=['a','b','c']; delete arr[1]; console.info(arr);
輸出:索引
0: "a" 2: "c" length: 3 //delete方法不會改變array數組的length屬性
此時要遍歷數組元素能夠纔可使用,
遍歷:
for(index in arr) { document.write('arr['+index+']='+arr[index]); }
這種遍歷方式跳過其中undefined的元素
2.數組對象splice方法:arr.splice(1,1);
JavaScript經過設置數組的length屬性來截斷數組是唯一一種縮短數組長度的方法.若是使用delete運算符來刪除數組中元素,雖然那個元素變成未定義的,可是數組的length屬性並不改變兩種刪除元素,數組長度也改變的方法.
代碼1:
/* * 方法:Array.remove(dx) * 功能:刪除數組元素. * 參數:dx刪除元素的下標. * 返回:在原數組上修改數組 */ //常常用的是經過遍歷,重構數組 Array.prototype.remove=function(dx) { if(isNaN(dx)||dx>this.length){return false;} for(var i=0,n=0;i<this.length;i++) { if(this[i]!=this[dx]) { this[n++]=this[i];//重構新數組, } } this.length-=1//改變length屬性 } a = ['1','2','3','4','5']; a.remove(0); //刪除下標爲0的元素
代碼2:
/* * 方法:Array.baoremove(dx) * 功能:刪除數組元素. * 參數:dx刪除元素的下標. * 返回:在原數組上修改數組. */ //咱們也能夠用splice來實現. Array.prototype.baoremove = function(dx) { if(isNaN(dx)||dx>this.length){return false;} this.splice(dx,1); } b = ['1','2','3','4','5']; b.baoremove(1); //刪除下標爲1的元素
代碼3:
//利用Array對象的兩個方法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項(至關於把第n項元素刪除了...) slice方法: 返回一個數組的一段,兩個參數,分別指定開始和結束的位置。 */ } var test=new Array(0,1,2,3,4,5); test=test.del(3); //從0算起,這裏也就是刪除第4項。 alert(test);
解釋一下slice,splice,concat方法的使用:
1.slice() 方法可從已有的數組中返回選定的元素。該方法不會改變原數組.它返回一個新的數組,包含從 start 到 end (不包括該元素)的 arrayObject 中的元素。
arrayObject.slice(start,end)
2.splice() 方法向數組中添加或者是刪除元素,而後返回被刪除的數組。該方法會改變原始數組。splice() 方法與 slice() 方法的做用是不一樣的,splice() 方法會直接對數組進行修改.
arrayObject.splice(index,howmany,item1,.....,itemX)
index:必需。整數,規定添加/刪除的元素的位置,使用負數可從數組結尾處規定位置。
howmany:必需。被刪除的數組元素的個數。若是設置爲 0,則不會刪除元素,即向數組中添加元素。若是爲1,表示刪除一個元素,若是2,表示刪除數組中兩個元素。
item1, ..., itemX:可選。向數組添加的新項目。
建立一個新數組,並向其添加一個元素:
<script type="text/javascript"> var arr = new Array(6) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" arr[3] = "James" arr[4] = "Adrew" arr[5] = "Martin" document.write(arr + "<br />")arr.splice(2,0,"William")document.write(arr + "<br />") </script>
輸出:
George,John,Thomas,James,Adrew,Martin George,John,William,Thomas,James,Adrew,Martin
刪除位於 index 2 的元素,並添加一個新元素來替代被刪除的元素:
<script type="text/javascript"> var arr = new Array(6) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" arr[3] = "James" arr[4] = "Adrew" arr[5] = "Martin" document.write(arr + "<br />")arr.splice(2,1,"William")document.write(arr) </script>
輸出:
George,John,Thomas,James,Adrew,Martin George,John,William,James,Adrew,Martin
刪除從 index 2 ("Thomas") 開始的三個元素,並添加一個新元素 ("William") 來替代被刪除的元素:
<script type="text/javascript"> var arr = new Array(6) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" arr[3] = "James" arr[4] = "Adrew" arr[5] = "Martin" document.write(arr + "<br />")arr.splice(2,3,"William")document.write(arr) </script>
輸出:
George,John,Thomas,James,Adrew,Martin George,John,William,Martin
3.concat() 方法用於鏈接兩個或多個數組,該方法不會改變現有的數組,而僅僅會返回被鏈接數組的一個副本。