栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从Javascript数组中删除空元素

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从Javascript数组中删除空元素

编辑: 大约9年前,当时没有很多有用的内置方法时,就回答了这个问题

Array.prototype

现在,当然,我建议您使用该

filter
方法。

请记住,此方法将为您返回 一个新数组, 其中的元素可以通过您提供给它的回调函数的条件。

例如,如果要删除

null
undefined
值:

var array = [0, 1, null, 2, "", 3, undefined, 3,,,,,, 4,, 4,, 5,, 6,,,,];var filtered = array.filter(function (el) {  return el != null;});console.log(filtered);

例如,这将取决于您认为什么是“空”,如果您正在处理字符串,则上述函数不会删除为空字符串的元素。

我看到经常使用的一种典型模式是除去那些元件 falsy
,包括一个空字符串

""
0
NaN
null
undefined
,和
false

您可以传递给

filter
方法,
Boolean
构造函数或在过滤条件函数中返回相同的元素,例如:

var filtered = array.filter(Boolean);

要么

var filtered = array.filter(function(el) { return el; });

在这两种方式中,这都是可行的,因为

filter
在第一种情况下,该方法将
Boolean
构造函数作为一个函数调用,转换该值,在第二种情况下,该
filter
方法在内部将回调的返回值隐式转换为
Boolean

如果您正在使用稀疏数组,并且试图摆脱“漏洞”,则可以使用

filter
传递返回true的回调的方法,例如:

var sparseArray = [0, , , 1, , , , , 2, , , , 3],    cleanArray = sparseArray.filter(function () { return true });console.log(cleanArray); // [ 0, 1, 2, 3 ]

旧答案: 不要这样做!

我使用此方法,扩展了本机Array原型:

Array.prototype.clean = function(deletevalue) {  for (var i = 0; i < this.length; i++) {    if (this[i] == deletevalue) {    this.splice(i, 1);      i--;    }  }  return this;};test = new Array("", "One", "Two", "", "Three", "", "Four").clean("");test2 = [1, 2,, 3,, 3,,,,,, 4,, 4,, 5,, 6,,,,];test2.clean(undefined);

或者,您可以简单地将现有元素推入其他数组:

// Will remove all falsy values: undefined, null, 0, false, NaN and "" (empty string)function cleanArray(actual) {  var newArray = new Array();  for (var i = 0; i < actual.length; i++) {    if (actual[i]) {      newArray.push(actual[i]);    }  }  return newArray;}cleanArray([1, 2,, 3,, 3,,,,,, 4,, 4,, 5,, 6,,,,]);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/442068.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号