如何删除数组中的所有空数组

Posted

技术标签:

【中文标题】如何删除数组中的所有空数组【英文标题】:How to remove all empty array inside an array 【发布时间】:2017-05-19 15:46:22 【问题描述】:

我有resultantarray这样的,

[["apple","banana"],[],[],[],["kiwi"],[],[]]

如何删除所有空的 [] array 以便我的 resultant array 看起来像这样:

[["apple","banana"],["kiwi"]];


var array = [["apple","banana"],[],[],[],["kiwi"],[],[]];// sample array

【问题讨论】:

使用 Array.prototype.filter(). 可以遍历父数组,使用Array原型中提供的splice()函数。 How can I remove empty object in from an array in JS的可能重复 var array = [["apple","banana"],[],[],[],["kiwi"],[],[]].filter((x) => return x.length) @DilipG - 答案不需要被接受为重复。通常有一些不被接受的解决方案有效。在这种情况下,有一个解决方案可以满足您在该页面上的要求 【参考方案1】:

使用Array.prototype.filter 过滤掉空数组 - 参见下面的演示:

var array = [["apple","banana"],[],[],[],["kiwi"],[],[]];// sample array

var result =  array.filter(e => e.length);
console.log(result);

在 ES5 中,可以省略上面使用的箭头函数

var array = [["apple","banana"],[],[],[],["kiwi"],[],[]];// sample array

var result =  array.filter(function(e)  
  return e.length;
);
console.log(result);

【讨论】:

不错的解决方案。我真的希望更多的人使用这种语法进行编码——这将使所有 javascript 调试变得更加容易(并且页面加载时间更快)【参考方案2】:

@kukuz 答案的 ES5 兼容代码。

var array = [["apple","banana"],[],[],[],["kiwi"],[],[]];// sample array

var result =  array.filter(function(x)return x.length);
console.log(result);

【讨论】:

对不起!没注意到@Jai【参考方案3】:

使用 Array.prototype.filter() 得到一个新的过滤数组:

var array = [["apple","banana"],[],[],[],["kiwi"],[],[]];
var newArr = array.filter(function(obj)
   return obj[0] !== undefined;
);

console.log(JSON.stringify(newArr, 0, 0));

【讨论】:

【参考方案4】:

使用以下代码:

var newArray = array.filter(value => JSON.stringify(value) !== '[]');

【讨论】:

以上是关于如何删除数组中的所有空数组的主要内容,如果未能解决你的问题,请参考以下文章

如何一次性删除通用列表中的所有空元素?

从末尾删除向量中的所有空元素

当行不消失时删除data.frame中的所有空列和行

如何正确删除操作?

windows批量删除当前目录以及子目录的所有空文件夹

从 SQL Server 中的 XML 中删除所有空节点