【发布时间】:2020-07-15 15:50:29
【问题描述】:
我只是 JavaScript 的初学者。 我一直在 Javascipt 中的数组上遇到这个问题,我们必须从数组中删除所有错误值。我已经附上了相同的图片JavaScript Array Question
https://codepen.io/tsiruot/pen/NWxLmGV?editors=0012
console.clear();
var arr = [NaN, 0, 15, false, -22, '', undefined, 47, null, 94]
var i
for (i = 0; i < arr.length; i++) {
if (!arr[i]) {
arr.splice(i, 1)
}
}
console.log(arr)
正如您在此代码笔中看到的, 问题是 if(!arr[i]) 没有考虑 0 和 undefined 为真。我正在使用拼接来删除元素。 我哪里错了?``
【问题讨论】:
-
当你拼接出一个元素时,你改变了数组的长度。因此,下一个
i++将跳过一个条目。你最好使用.filter()。 -
嗨,过滤器很简单 - es6 功能
-
var arr = arr.filter(i => i);
-
@LakshmanKambam 或
arr = arr.filter(Boolean); -
@LakshmanKambam 它实际上是一个 es5 功能(ECMA-262,第 5 版)。
标签: javascript arrays for-loop if-statement