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

时间:2014-08-22 08:20:04

标签: javascript underscore.js

我有这个数组:

[null, {name:'John'}, null, {name:'Jane'}]

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

5 个答案:

答案 0 :(得分:48)

如果数组包含空值或对象,则可以使用compact

var everythingButTheNulls = _.compact(list);

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

还可以将rejectisNull谓词一起使用:

var everythingButTheNulls = _.reject(array, _.isNull);

答案 1 :(得分:20)

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

http://underscorejs.org/#without

答案 2 :(得分:5)

这对你有用

过滤

_.filter(arr,function (value) {
    return value!==null;
})

<强>拒绝

_.reject(arr,function (value) {
    return value===null;
})

答案 3 :(得分:0)

来自下划线文档

without_.without(array, *values) 
Returns a copy of the array with all instances of the values removed.

所以只需使用此方法

var a = [null, {name:'John'}, null, {name:'Jane'}]
a = _.without(a, null);

答案 4 :(得分:0)

最好的解决方案是使用compact,但是当您不包含特定的真值测试功能时,filter函数的默认行为是删除 falsy

例如:

_.filter([null, {name:'John'}, null, {name:'Jane'}])

返回不包含null的对象数组:

[{name:'John'}, {name:'Jane'}]