js刪除數組裡的某個元素
阿新 • • 發佈:2021-07-14
刪除陣列指定的某個元素
首先可以給js的陣列物件定義一個函式,用於查詢指定的元素在陣列中的位置,即索引,程式碼為:
Array.prototype.indexOf=function(val){
for(vari=0;i<this.length;i++){
if(this[i]==val)returni;
}
return-1;
};
然後使用通過得到這個元素的索引,使用js陣列自己固有的函式去刪除這個元素:程式碼為:
Array.prototype.remove=function(val){
varindex=this.indexOf(val);
if(index>-1){
this.splice(index,1);
}
};
這樣就構造了這樣一個函式,比如我有有一個數組:
varemp=['abs','dsf','sdf','fd']
假如我們要刪除其中的 'fd' ,就可以使用:
emp.remove('fd');
http://www.ssnd.com.cn 化妝品OEM代加工
刪除的陣列的某一項
splice(index,len,[item]) 註釋:該方法會改變原始陣列。 splice有3個引數,它也可以用來替換/刪除/新增陣列內某一個或者幾個值 index:陣列開始下標len: 替換/刪除的長度 item:替換的值,刪除操作的話 item為空 如:arr = ['a','b','c','d']刪除
//刪除起始下標為1,長度為1的一個值(len設定1,如果為0,則陣列不變)
var arr = ['a','b','c','d'];
arr.splice(1,1);
console.log(arr);
//['a','c','d'];
//刪除起始下標為1,長度為2的一個值(len設定2)
var arr2 = ['a','b','c','d']
arr2.splice(1,2);
console.log(arr2);
//['a','d']
替換
//替換起始下標為1,長度為1的一個值為‘ttt’,len設定的1
var arr = ['a','b','c','d'];
arr.splice(1,1,'ttt');
console.log(arr);
//['a','ttt','c','d']
var arr2 = ['a','b','c','d'];
arr2.splice(1,2,'ttt');
console.log(arr2);
//['a','ttt','d'] 替換起始下標為1,長度為2的兩個值為‘ttt’,len設定的1
新增 ---- len設定為0,item為新增的值
var arr = ['a','b','c','d'];
arr.splice(1,0,'ttt');
console.log(arr);
//['a','ttt','b','c','d'] 表示在下標為1處新增一項'ttt'
2:deletedelete刪除掉陣列中的元素後,會把該下標出的值置為undefined,陣列的長度不會變
var arr = ['a','b','c','d'];
delete arr[1];
arr;
//["a", undefined × 1, "c", "d"]中間出現兩個逗號,陣列長度不變,有一項為undefined
在stackoverflow高分回答上看到jquery之父John Resig曾經的文章寫過的一個程式碼:
// Array Remove - By John Resig (MIT Licensed)
Array.prototype.remove = function(from, to) {
var rest = this.slice((to || from) + 1 || this.length);
this.length = from < 0 ? this.length + from : from;
return this.push.apply(this, rest);
};
下面給出一些實際的用例:
// 移除陣列中的第二項
array.remove(1);
// 移除陣列中的倒數第二項
array.remove(-2);
// 移除陣列中的第二項和第三項(從第二項開始,刪除2個元素)
array.remove(1,2);
// 移除陣列中的最後一項和倒數第二項(陣列中的最後兩項)
array.remove(-2,-1);
這個例子跟上面第一個的還是挺相似的,不過沒有檢查元素的具體專案,而是通過元素在陣列的下標位置來定位刪除。