【发布时间】:2021-02-15 16:30:40
【问题描述】:
我正在尝试解决一个需要创建函数 cleanArray 并从数组中删除各种项目的练习。这是我所能得到的
function cleanArray(arr) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] === null || 0 || "" || false || undefined) {
arr.splice(i, 1);
return arr
}
}
}
但这只会过滤掉我的null。我尝试将要删除的项目放在单独的数组中或一个接一个地删除,但它要么返回undefined,要么只过滤掉 0,即使它不是第一个要删除的项目。
我已经看到人们使用filter 或indexOf 的其他答案,但我想看看是否有办法使用splice。这里不能用逻辑运算符吗?
【问题讨论】:
-
每次您进行不同检查时都必须进行比较:您应该将其阅读为:“如果
arr[i] === null,或arr[i] === 0...或arr[i] === undefined;在所有这些情况下都可以这……” -
与Javascript: The prettiest way to compare one value against multiple values 重复,但无条件的
return仍然是个问题。您可以将整个代码替换为arr.filter(Boolean)。更好的目标:Remove all falsy values from an array.
标签: javascript arrays