过滤数组,以便删除所有未定义的对象

时间:2018-11-12 09:01:06

标签: arrays angular object lodash

我需要过滤一个数组,以便从中删除未定义的对象。

enter image description here

我尝试使用lodash _.filter,但未成功(返回完全为空的数组)

_.filter(myArray, _.isEmpty)

我正在使用Angular 6,所以任何带有打字稿或lodash的东西都是完美的。

6 个答案:

答案 0 :(得分:1)

更简单的方法

_.filter(myArray, function(o) { return o !== undefined });

答案 1 :(得分:1)

一种更简单的方法:

_.filter(myArray, Boolean)

这会删除null,0和undefined的数组。

答案 2 :(得分:1)

使用Javascript也可行。它支持null,undefined,0,empty。

newArray = myArray.filter(item=> item);

答案 3 :(得分:1)

您不需要图书馆; the Javascript array type has a filter method

var filteredArray = myArray.filter(item => item !== undefined);

答案 4 :(得分:1)

lodash filter函数中,如果回调(您作为参数传递)返回该元素被视为保留在结果数组中的真实值,否则(如果返回falsy)则不会保留该元素。您的isEmpty如果为空,则返回true,因此结果保留这些值(nullundefined0,...)。因此,您可以使用

_.filter(myArray, _.negate(_.IsEmpty))_.filter(myArray, v => !_.IsEmpty(v))

以您尝试的方式

或者,您可以直接使用_.filter(myArray),但是在这种情况下,它不会像_.filter(myArray, Boolean)一样删除空对象或空数组,使用{时不必传递Boolean {1}}

如果您不想求反并希望有一个更简单的解决方案来删除所有空元素,那么可以使用

lodash

答案 5 :(得分:0)

var newArray = array.filter(arrayItem => arrayItem)

它将过滤数组,以便删除所有未定义的对象并分配给名为newArray的新变量