【发布时间】:2015-07-06 05:17:27
【问题描述】:
如果数组有空值或空值,则清理数组的简单函数,所以如果我们有:
[ 'click1', 'click2', null, '', '', 'submitForm' ]
...它会返回:
[ 'click1', 'click2', 'submitForm' ]
这是我的代码:
function squeakyClean(arr) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] == null || arr[i] == '') {
arr.splice(i);
};
};
return arr;
}
我有一个 for 循环来检查数组中的每个值和一个 if 语句来查看它是否等于 null 或空字符串,如果是这样,我使用数组拼接方法删除该值,然后将干净的数组返回到外面for 循环。
如果您输入一个没有空字符串或空值的数组,它会起作用,但如果我输入[ 1, , 2, 3, 0, -1, 1.1 ],它会返回[1],这是不应该的。我在这里想念什么?
PS:我看过其他人如何在没有 for 循环和拼接方法的情况下解决这个问题,但我对如何使用这两个方法解决它很感兴趣。
【问题讨论】:
-
也许这只是一个错字,但是:如果您输入一个像 [ 1, , 3, 4 ] 这样的数组,则数组索引 1 处的值(第二个值)既不是 null 也不是空字符串,但未定义。如果你不想这样,你需要用 (typeof arr[i]==='undefined') 过滤掉它。
-
确实如此,我没有考虑。但是一旦我将 arr.splice(i) 更改为 arr.splice(i, 1) 它就可以完全工作。嗯
标签: javascript arrays splice