2017-05-24 17 views
1

以外GROUPBYする方法LodashLodash。未定義

とのユニークな特性を得るために、オブジェクトのグループアップ配列しようとしているが、プロパティが

を存在しない場合には、固有のプロパティのようundefinedを取り、それを避けるためにどのような方法はありますか?既存のプロパティのみを残しましたか?

だから私はMy Office 1を達成するつもりですが、私の解決策は undefinedMy Office 1 アレイの例

[ 
     {office: null}, 
     {office: 
      { 
       name: 'My Office 1' 
      } 
     } 
] 

コード

Object.keys(_.groupBy(arr, 'office.name')).map((office, index) { ... } 
+1

私はそれが可能だとは思いません。この場合、 'undefined'は有効なグループ化です。 'groupBy'の前後にフィルターをかけなければなりません。 – shotor

答えて

2

を取得してあなただけのオブジェクトをフィルタリングすることができますこれはパスを持っていません。

let objects = [ 
 
    {office: null}, 
 
    {office: {name: 'My Office 1'}}, 
 
    {office: {name: 'My Office 2'}}, 
 
    {office: {name: 'My Office 1'}}, 
 
]; 
 

 
let path = 'office.name'; 
 
let grouped = _(objects) 
 
    .filter(object => _.has(object, path)) 
 
    .groupBy(path) 
 
    .value(); 
 

 
console.log(grouped);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>