2016-10-16 63 views
1
var obj = {a: [], b: [1,2], c: [], d: [1]}; 

我如何獲得對象的非空數組像下面這樣:Lodash拒絕得到返回的對象

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

什麼是你想要做的,你嘗試過什麼到目前爲止。展示你的工作。 – Soviut

回答

3

你可以使用pickBy()來做你以後的事情。

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

小提琴這裏:https://jsfiddle.net/W4QfJ/3160/

注:不像filter()reject(),這將返回一個對象,讓你的原來的結構(而不​​是一個數組)。

+0

謝謝,它的工作原理! – user5671335

0

_.filter()是你在找什麼:

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

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

如果你想在你的標題中使用_.reject(),你可以這樣做:

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

_.reject和_.filter有什麼區別? – user5671335

+0

拒絕只是過濾器的反面。因此,如果您想忽略該元素,則拒絕您返回true。與過濾器相比,如果要保留該對象,則返回true。 –

+0

_.reject返回一個數組 – user5671335

2

另一種方式來做到這一點:_.omitBy(obj, _.isEmpty);

0

眼下,Lodash有一個名爲_.omit方法,它不正是你所需要的:

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