2012-08-07 189 views
1
var arr = [ 4, "Pete", "test", 8, "John", "", "test" ]; 

我該如何從這個數組中刪除值test和空字符串?最好的方法是什麼?JavaScript - 從陣列中刪除

+5

重複 - http://stackoverflow.com/questions/3954438/remove-item-from-array-by-value – 2012-08-07 11:34:12

回答

6
var arr = [ 4, "Pete", "test", 8, "John", "", "test" ]; 
var l = arr.length; 

while(l--) { 
    if(arr[l] === "test" || arr[l] === "") { 
     arr.splice(l, 1); 
    } 
} 

//> arr 
//[4, "Pete", 8, "John"] 
+0

' arr.splice(arr.indexOf('test'),1);' – jAndy 2012-08-07 11:43:34

+0

@j並非真的,有多個項目需要刪除。在這裏多次使用indexOf會因爲'n²'-ss – Esailija 2012-08-07 11:44:29

+0

哦,你是對的。沒有意識到有多重價值。無論如何,我的解決方案存在缺陷,因爲'-1'錯誤匹配 – jAndy 2012-08-07 11:45:29

1

檢查,如果要刪除單個項目,它可以幫助你

http://jsfiddle.net/HWKQY/

+0

不適用於多個項目http://jsfiddle.net/HWKQY/433/ – Esailija 2012-08-07 11:46:06

2

備選:filter

var arr = [ 4, "Pete", "test", 8, "John", "", "test" ] 
      .filter(function(v){return String(v).length && v !== 'test';}); 
//=> arr = [4, "Pete", 8, "John"]; 
+0

'Array.prototype.filter'工程非破壞性,你需要把值賦給'arr'。除此之外,爲什麼不只是調用'return v!=='test';'? – jAndy 2012-08-07 11:48:08