使用JavaScript从Array中删除零值

时间:2011-04-28 11:18:48

标签: javascript arrays

我有一个名为“ids”的数组和一些像['0','567','956','0','34']的值。现在我需要从这个数组中删除“0”值。 ids.remove(“0”); 无效。
请让我知道解决方案。

8 个答案:

答案 0 :(得分:14)

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

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

答案 1 :(得分:12)

这是一种方法:

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

答案 2 :(得分:7)

这是一个函数,它将删除具有特定值的数组元素,当两个连续元素具有相同值时,该元素不会失败:

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&lt; = 8除外),您可以使用Array对象的filter()方法,但要注意这确实会返回一个新数组:

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

答案 3 :(得分:4)

对于非平凡大小的数组,构建新数组的速度比拼接或过滤器快得多。

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

如果你拼接,则向后迭代!

答案 4 :(得分:2)

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

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

答案 5 :(得分:1)

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

答案 6 :(得分:1)

对于ES6最佳实践标准:

let a = ['0','567','956','0','34'];


a = a.filter(val => val !== "0");

(请注意,“ id”是数组内的字符串,因此要检查无论类型如何,都应输入“!=“)

答案 7 :(得分:0)

我相信,最短的方法是

var newList = ['0', '567', '956', '0', '34'].filter(cV => cV != "0")

你总是可以的,

listWithZeros = ['0', '567', '956', '0', '34']
newList = listWithZeros.filter(cv => cv != "0")

newList 包含您需要的列表。

说明

<块引用>

Array.prototype.filter()

此方法返回一个新数组,该数组是在测试条件函数后过滤掉项目而创建的

它接收一个函数,可能带有3个参数。

语法:

Array.prototype.filter((currentValue, index, array) => { ... })

参数自行解释。

Read more here.