1. 程式人生 > 其它 >js刪除數組裡的某個元素

js刪除數組裡的某個元素

刪除陣列指定的某個元素

首先可以給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);

這個例子跟上面第一個的還是挺相似的,不過沒有檢查元素的具體專案,而是通過元素在陣列的下標位置來定位刪除。