2012-11-06 70 views
1

我試圖從一個數組中刪除某些項目,從陣列的JavaScript

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); 
}; 

var BOM = [0,1,0,1,0,1,1]; 


var IDLEN = BOM.length; 

for(var i = 0; i < IDLEN ;++i) 
{ 

    if(BOM[i] == 1) 
    { 
     BOM.remove(i); 
    //IDLEN--; 
    } 

} 

結果

BOM = [0,0,0,1]; 

預期的結果中刪除產品

BOM = [0,0,0]; 

它的外觀像我做錯了什麼,請幫助我。

謝謝。

+0

你至少可以說明它是如何工作?刪除的標準是什麼? – Joseph

+0

什麼時候定義了你的IDLEN?另外,你的'remove'方法似乎對'Array.splice'很熟悉,你有沒有考慮用它來完成你想要的? – Passerby

+0

對不起,編輯提問。 – Red

回答

4

試試這個

var BOM = [0,1,0,1,0,1,1]; 
for(var i = 0; i < BOM.length;i++){ 
    if(BOM[i] == 1) { 
    BOM.splice(i,1); 
    i--; 
    } 
} 
console.log(BOM); 
+0

感謝它的工作:'我 - ;' – Red

0
Array.prototype.remove= function(){ 
    var what, a= arguments, L= a.length, ax; 
    while(L && this.length){ 
     what= a[--L]; 
     while((ax= this.indexOf(what))!= -1){ 
      this.splice(ax, 1); 
     } 
    } 
    return this; 
} 

調用此函數

for(var i = 0; i < BOM.length; i++) 
{ 
    if(BOM[i] === 1) 
     BOM.remove(BOM[i]); 
}