2015-12-20 118 views
1

輸入從對象創建數組的工會

['title', 'name', 'venue'] 

我迄今爲止嘗試:

_.filter(foo, _.pick(fields)) 
+0

這個'foo'對象結構是靜態的嗎?或者可以添加其他字段? – Kiril

+0

它是靜態對象。 –

回答

0

嘗試代碼(閱讀更多關於reduce)。見jsbin

_.uniq(//_.reduce finally will return array, pass it to _.uniq to leave only uniq values 
    _.reduce(foo, function(result, value, prop) {//get all properties on the 1st level and try find fields array among them 
     if (_.isArray(value.fields)) { 
     //is such array is found - add its values to the result array 
     result.push.apply(result, value.fields); 
     } 
     return result; 
    }, []) 
) 
0

嘗試這種情況:

_(foo) 
    .pluck('fields') 
    .flatten() 
    .uniq() 
    .value(); 

的第一步是使用pluck()得到fields數組的數組。但是,我們希望使用flatten()來獲得平面字符串數組,此時仍包含重複項。最後一步是使用uniq()刪除重複項。

+0

加入'.compact'方法會更好地避免falsy值? –