如何从JavaScript中的数组中删除空元素?
有没有简单的方法,还是我需要遍历它并手动将其删除?
现在,当然,我建议您使用该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 ]
问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。