javascript 数组清理函数

标签 javascript arrays splice

如果数组有 null 或空值,清理数组的简单函数,所以如果我们有:

[ '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 循环和拼接方法的情况下解决这个问题,但我对如何使用这两个方法解决它很感兴趣。

最佳答案

考虑使用 filter .比如下面会过滤掉null, undefined, false, +0, -0 NaN"":

arr.filter(Boolean)

关于javascript 数组清理函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31233762/

相关文章:

javascript - 使用 javascript 和 dom 从单选按钮创建输入

MYSQL、DATETIME、事件、在 SQL 中或在输出中按月/年分组?

javascript - 使用 javascript 中的 splice 删除嵌套数组中的项目

javascript - arr.push(arr.splice(n,1)) "swallows"被移动对象的属性

javascript - 在 Controller 之间传递常量值 angularjs

javascript - Javascript this 对象的替代品

Javascript:如何声明非全局静态方法?

c - 将字符数组用作整数

java - Android 手机上的文本文件

JavaScript 方法中 "splice(a,b,...)"的 Java 等效方法