我需要过滤一个数组,以便从中删除未定义的对象。
我尝试使用lodash _.filter,但未成功(返回完全为空的数组)
_.filter(myArray, _.isEmpty)
我正在使用Angular 6,所以任何带有打字稿或lodash的东西都是完美的。
答案 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
,因此结果保留这些值(null
,undefined
,0
,...)。因此,您可以使用
_.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的新变量