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