在Javascript中从数组中删除空元素

1601

如何从JavaScript数组中删除空元素?

有没有简单直接的方法,还是必须手动循环并逐个删除?


27
如果你的问题能够明确指出“空元素”指的是什么,那将会很有帮助,因为这里的大部分答案(在我看来)错误地将其解释为“假值”元素。注意:var a = [,,]var a = [undefined, undefined]之间存在区别。前者是真正的空数组,而后者实际上有两个键,但值为undefined - Alnitak
虽然不是完全的答案,但我认为在数组中尽可能避免使用null/undefined是更好的实践。例如,如果你的null来自于使用map函数映射另一个数组时,对于某些元素返回null,那么在运行map之前尝试使用Array.filter过滤掉这些元素。这样可以使你的代码更易读/自我记录。显然,这并不适用于每种情况,但它可以应用于很多情况。 - Luke Redmore
51个回答

-5

试试这个。将你的数组传递给它,它会返回删除空元素后的数组。*已更新以解决Jason指出的错误。

function removeEmptyElem(ary) {
    for (var i = ary.length - 1; i >= 0; i--) {
        if (ary[i] == undefined)  {
            ary.splice(i, 1);
        }       
    }
    return ary;
}

2
不要使用这个函数,它会因为明显的原因而失败:在这个数组上试一下:var myArray = [1,2,,3,,3,,,,,,4,,4,,5,,6,,,,]; - Jason Bunting
哦,是的,它有一些错误。如果你修复了它,我会接受你的答案。 - Tamas Czinege
这已经更新了,不应再遇到相同的错误。 - Matty
3
迭代应该从i=ary.length-1开始,而不是i=ary.length。请修正此错误。 - GetFree
它仍然存在漏洞。它从长度开始检查array[i],在第一种情况下将始终未定义。 - Mutant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接