2016-12-06 119 views
0
的陣列之間的屬性和值的總和

我有用戶陣列他們的姓名,組由嵌套JSON和對象

var users = [{'name':'zulekha'}, {'name':'deepika'}]; 

我取由從JIRA的API的每個用戶worklogged。所以我得到這樣的對象。

var worklogResult = { 
    "issues": [ 
    { 
     "fields": { 
     "worklog": { 
      "worklogs": [ 
      { 
       "author": { 
       "name": "zulekha", 
       }, 
       "timeSpentSeconds": 180 
      }, 
      { 
       "author": { 
       "name": "deepika", 
       }, 
       "timeSpentSeconds": 210 
      } 
      ] 
     } 
     } 
    }, 
    { 
     "fields": { 
     "worklog": { 
      "worklogs": [ 
      { 
       "author": { 
       "name": "deepika", 
       }, 
       "timeSpentSeconds": 140 
      } 
      ] 
     } 
     } 
    }, 
    { 
     "fields": { 
     "worklog": { 
      "worklogs": [ 
      { 
       "author": { 
       "name": "zulekha", 
       }, 
       "timeSpentSeconds": 600, 
      } 
      ] 
     } 
     } 
    }, 
    { 
     "fields": { 
     "worklog": { 
      "worklogs": [] 
     } 
     } 
    } 
    ] 
} 

現在我想以這樣的方式,我可以得到下面的輸出匹配worklogResult用戶

輸出= [{ '名': 'zulekha', 'timeSpentSeconds':780},{ '名': '迪皮卡', 'timeSpentSeconds':350}]

任何人都可以建議我如何實現這個?

回答

1

使用到平坦嵌套對象

_.chain(worklogResult.issues) 
    .flatMap('fields.worklog.worklogs') 
    .thru(function(spents) { 
     return _.map(users, function(user) { 
      return _.merge(user, { 
       timeSpentSeconds: _.chain(spents) 
        .filter(['author.name', user.name]) 
        .map('timeSpentSeconds') 
        .sum() 
        .value() 
      }) 
     }) 
    }) 
    .value() 
+0

感謝。它有助於 :) – zulekha