过滤掉具有空值的数组,下划线

Joe*_*Joe 25 javascript underscore.js

我有这个数组:

[null, {name:'John'}, null, {name:'Jane'}]
Run Code Online (Sandbox Code Playgroud)

我想删除空值.使用下划线有一种简单的方法吗?

Gru*_*nny 53

如果数组包含空值或对象,那么您可以使用compact:

var everythingButTheNulls = _.compact(list);
Run Code Online (Sandbox Code Playgroud)

NB compact删除所有虚假值,因此如果数组可能包含零,false等,那么它们也将被删除.

也可以使用带有isNull谓词的reject:

var everythingButTheNulls = _.reject(array, _.isNull);
Run Code Online (Sandbox Code Playgroud)


one*_*o12 20

尝试使用_.without(array, *values)它将删除您不需要的所有值.在你的情况下*values == null

http://underscorejs.org/#without


Mri*_*jay 5

这对你有用

过滤

_.filter(arr,function (value) {
    return value!==null;
})
Run Code Online (Sandbox Code Playgroud)

拒绝

_.reject(arr,function (value) {
    return value===null;
})
Run Code Online (Sandbox Code Playgroud)