从javascript数组中删除零值

从javascript数组中删除零值

问题描述:

Hai所有,我有一个名为“ids”和一些值如['0','567','956','0','34']的数组。现在我需要从这个数组中删除“0”值。 ids.remove(“0”);不起作用。
请让我知道解决方案。从javascript数组中删除零值

+3

好了,'Array.prototype.remove'不存在,因此它不能正常工作;) – 2011-04-28 11:24:16

在javascript中使用拼接方法。试试这个功能:

function removeElement(arrayName,arrayElement) 
{ 
    for(var i=0; i<arrayName.length;i++) 
    { 
     if(arrayName[i]==arrayElement) 
      arrayName.splice(i,1); 
     } 
    } 

的参数是:

arrayName:-  Name of the array. 
arrayElement:- Element you want to remove from array 
+0

是什么1.我想我需要使用“0”在我的情况下是“1”的吗? – vissu 2011-04-28 11:25:18

+0

+1虽然严格的比较可能会更好...... – 2011-04-28 11:25:31

+0

@vissupepala:否请阅读文档:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice。这意味着从索引“i”开始删除1个元素。 – 2011-04-28 11:26:04

下面的代码可以解决你的问题

for(var i=0; i<ids.length;i++) 
{ 
    if(ids[i]=='0') 
     ids.splice(i,1); 
    } 
+0

其简单易懂,也解决了问题。谢谢 – vissu 2011-04-28 12:06:39

+4

如果阵列有两个连续的零,那将会失败。 – 2011-04-28 13:40:39

这里,将删除数组元素与赢得特定值的函数当两个连续元素具有相同的值时不会失败:

function removeElementsWithValue(arr, val) { 
    var i = arr.length; 
    while (i--) { 
     if (arr[i] === val) { 
      arr.splice(i, 1); 
     } 
    } 
    return arr; 
} 

var a = [1, 0, 0, 1]; 
removeElementsWithValue(a, 0); 
console.log(a); // [1, 1] 

在大多数浏览器(除IE < = 8),可以使用阵列的对象的filter()方法中,虽然注意,这不会返回你一个新的数组:

a = a.filter(function(val) { 
    return val !== 0; 
}); 
+0

你也可以'返回val;' – 2017-09-16 16:42:14

+0

@BrianLeishman:如果你所有的数组成员都保证是数字,那么是的,但通常情况并不相同:使用'return val'将会过滤出任何虚假值,例如作为'假'或一个空字符串,而不是'0'。 – 2017-09-18 09:16:37

+0

是的,这是特别在这个例子中,我想,因为你有'!=='这是有道理的这里 – 2017-09-18 13:27:16

有关非平凡尺寸数组,建立一个新的阵列比拼接或过滤要快得多。

var new_arr = [], 
tmp; 

for(var i=0, l=old_arr.length; i<l; i++) 
{ 
    tmp = old_arr[i]; 

    if(tmp !== '0') 
    { 
    new_arr.push(tmp); 
    } 
} 

如果进行拼接,则向后迭代!

+0

+1向后迭代 – As3adTintin 2014-11-04 19:38:30

这里有一个办法做到这一点:

['0','567','956','0','34'].filter(Number) 

ids.filter(function(x) {return Number(x);});