gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 02:30:02 25 4
gpt4 key购买 nike

我正在尝试循环遍历数组并删除任何等于 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com