2012-08-07 148 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