2017-10-12 5 views
1

I 부모 자식 관계를 포함하는 배열을 사용 제품 : 아래와 같이패턴 화 된 부모 자식 UnderscoreJS

[{ 
    Company: 'ABC', 
    Employees: [{ Company: 'ABC', Name: 'EMP-1' }, 
       { Company: 'ABC', Name: 'EMP-2' }, 
       { Company: 'ABC', Name: 'EMP-3' }] 
}, 
{ 
    Company: 'XYZ', 
    Employees: [{ Company: 'XYZ', Name: 'EMP-4' }, 
       { Company: 'XYZ', Name: 'EMP-5' }, 
       { Company: 'XYZ', Name: 'EMP-6' }] 
}] 

UnderscoreJS의 _.flatten 방법을 이용하여, I는 동일한 수준 0 모든 요소하려는 :

[{ Company: 'ABC' } 
{ Company: 'ABC', Name: 'EMP-1' }, 
{ Company: 'ABC', Name: 'EMP-2' }, 
{ Company: 'ABC', Name: 'EMP-3' }, 
{ Company: 'XYZ' }, 
{ Company: 'XYZ', Name: 'EMP-4' }, 
{ Company: 'XYZ', Name: 'EMP-5' }, 
{ Company: 'XYZ', Name: 'EMP-6' }] 

그러나 이것을 달성하는 방법을 모르겠습니다. 순수 JS와

답변

1

다음은 데이터에서 첫 maps는 직원 배열과 종업원 배열없이 회사의 배열을 반환 밑줄 솔루션입니다. 이 배열은 flattened입니다.

var result = _.chain(data) 
    .map(company => [_.omit(company, 'Employees'), company.Employees]) 
    .flatten() 
    .value(); 
0

내 솔루션 :

var array = [{ 
 
    Company: 'ABC', 
 
    Employees: [{ Company: 'ABC', Name: 'EMP-1' }, 
 
       { Company: 'ABC', Name: 'EMP-2' }, 
 
       { Company: 'ABC', Name: 'EMP-3' }] 
 
}, 
 
{ 
 
    Company: 'XYZ', 
 
    Employees: [{ Company: 'XYZ', Name: 'EMP-4' }, 
 
       { Company: 'XYZ', Name: 'EMP-5' }, 
 
       { Company: 'XYZ', Name: 'EMP-6' }] 
 
}] 
 

 
var result = array.reduce(function(store, object, index) { 
 
    var arrayOfEmployees = object.Employees; 
 

 
    delete object.Employees; 
 
    store.push(object); 
 

 
    return store.concat(arrayOfEmployees) 
 
}, []); 
 

 
console.log(result)
.as-console-wrapper { max-height: 100% !important; top: 0; }