使用JavaScript从Array中删除零值

vis*_*ssu 8 javascript arrays

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

Har*_*Joy 14

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

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

参数是:

arrayName:-      Name of the array.
arrayElement:-   Element you want to remove from array
Run Code Online (Sandbox Code Playgroud)

  • 如果数组有两个连续的零,那将失败. (7认同)
  • @TimDown是对的,你需要在`if`语句中执行`i --`来解决这个问题. (3认同)

jes*_*sal 12

这是一种方法:

['0','567','956','0','34'].filter(Number)
Run Code Online (Sandbox Code Playgroud)


Tim*_*own 10

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

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]
Run Code Online (Sandbox Code Playgroud)

在大多数浏览器中(IE <= 8除外),您可以使用filter()Array对象的方法,但要注意这确实会返回一个新数组:

a = a.filter(function(val) {
    return val !== 0;
});
Run Code Online (Sandbox Code Playgroud)


小智 5

对于 ES6 最佳实践标准:

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


a = a.filter(val => val !== "0");
Run Code Online (Sandbox Code Playgroud)

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