2017-11-17 14 views
0

데이터베이스의 데이터에서 객체 배열을 만들었습니다. 파이 차트에 데이터를 표시하려고했지만 이러한 형식을 만드는 데 어려움을 겪고 있습니다.lodash를 사용하는 객체 배열의 키를 기반으로 단일 객체 추가 또는 결합

let natinalityBreakdown = [ 
{Omani: Array(2), Pakistani: Array(2), Indian: Array(3), Test: Array(1)}, 
{Omani: Array(6), Chinese: Array(1)}, 
{Omani: Array(51), OMANi: Array(1), Pakistani: Array(5)} 
]; 

코드 아래 사용 : 아래

내가 지금까지 만든, 최종 결과입니다

{Omani: Array(59), Pakistani: Array(7), Indian: Array(3), Test: Array(1), Chinese: Array(1), OMANi: Array(1)} 
: 나는 다음과 같이 객체와 같은 결과를 원

let natinalityBreakdowna = []; 
     _.forEach(company, function(company) { 
      const linkedCompanyUsers= _(driver) 
       .filter(d => d.companyId === company.companyId) 
       .value(); 
      console.log(linkedCompanyUsers); 
      let nationalityBreakdown = _.groupBy(linkedCompanyUsers, "nationality"); 
      console.log(nationalityBreakdown); 
      nationalityBreakdown = _.omit(nationalityBreakdown, "undefined"); 
      console.log(nationalityBreakdown); 
      natinalityBreakdowna.push(nationalityBreakdown); 
     }); 
     console.log(natinalityBreakdowna); 

감사합니다.

답변

1

array#reduce을 사용하면 같은 그룹에 같은 국적을 가진 사람들을 array#concat 개체에 추가 할 수 있습니다.

var result = natinalityBreakdown.reduce(function(res, obj){ 
    Object.keys(obj).forEach(function(k){ 
    res[k] = res[k] || []; 
    res[k] = res[k].concat(obj[k]); 
}); 
return res; 
},{});