javascript - 在 Javascript 中使用 .splice() 删除数组中的值

标签 javascript arrays splice

我正在尝试循环遍历数组并删除任何等于 false、null、0、未定义、NaN 或“”的值。

当我调用该函数时,它应该返回一个空白数组,但现在它输出 [null,0,null,null,""]。这是我到目前为止所拥有的。

 function bouncer(arr) {
      for(i=0;i<arr.length;i++){
        if(arr[i]===false||null||0||undefined||NaN||""){
          arr.splice(i,1);
        }
      }
    return arr;
    }

bouncer([false, null, 0, NaN, undefined, ""]);

谁能告诉我我做错了什么以及为什么它不从数组中删除这些值?

最佳答案

问题出在这一行:

if(arr[i]===false||null||0||undefined||NaN||""){...}

比较多个值的正确方法是:

if(arr[i]===false|| arr[i]=== null|| arr[i]===  0||arr[i] ===  undefined|| arr[i] ===  NaN|| arr[i]===  ""){ ..}

您可以进一步简化它,因为我们需要过滤的所有值自然都会计算为 false

if(!arr[i])

重新实现您的函数,并调整拼接索引:

function bouncer(arr){
    for( var i = 0 ; i < arr.length ; i++ ){
        if(!arr[i]){
            arr.splice(i--,1);
        }
    }
    return arr;
}

实现不变性的更好方法是使用Array.filter

function bouncer(arr){
    return arr.filter((item) => (!!item));
}

关于javascript - 在 Javascript 中使用 .splice() 删除数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48374141/

相关文章:

javascript - 使用 javascript 中的 splice 删除嵌套数组中的项目

javascript - 类型错误 : myArr[i]. splice 不是函数

javascript - 新手正则表达式问题

javascript - 对于输入类型 ="number"如何将默认值设置为 0

c# - 实例化并初始化多维数组 C#

java - 如何在android中将HashMap转换为json数组?

javascript - jquery 1分钟后发送 $POST 到服务器

javascript - 为什么我的内容脚本不能使用已经注入(inject)的脚本?

c++ - 相当于 C++ 中 vector 的 int[] + k

Javascript删除比拼接