Lodash拒绝获得返回对象

时间:2016-10-16 01:10:09

标签: javascript lodash

var obj = {a: [], b: [1,2], c: [], d: [1]};

如何获得非空对象数组,如下所示:

{b: [1,2], d: [1]}

5 个答案:

答案 0 :(得分:3)

您可以使用pickBy()完成您的工作。

var result = _.pickBy(obj, function(val){
    return val.length > 0;
});

在这里小提琴:https://jsfiddle.net/W4QfJ/3160/

注意:filter()reject()不同,它返回一个对象,保留原始结构(而不​​是数组)。

答案 1 :(得分:2)

另一种方法:_.omitBy(obj, _.isEmpty);

答案 2 :(得分:0)

_.filter()是您正在寻找的:

var obj = {a: [], b: [1,2], c: [], d: [1]};

console.log(_.filter(obj, function(o){ return o.length; }))

答案 3 :(得分:0)

如果你想在标题中使用_.reject(),你可以这样做:

_.reject({a: [], b: [1,2], c: [], d: [1]},function(o){ 
   return o.length == 0 
});

答案 4 :(得分:0)

目前,Lodash有一个名为_.omit的方法可以完全满足您的需求:

> const object = {a: 1, b: 2, c: 3, d: 4}
undefined
> _.omit(object, ['a', 'c'])
{ b: 2, d: 4 }