const articles = [{ key : '12', 'desc': {'_id': 'descA'}}, {key: '12', 'desc': 
    {'_id': 'descB'}}, {key: '12', 'desc': {'_id': 'descC'}}, {key: '13', 'desc': {'_id': 'descA'}}, {'key': '13', 'desc': {'_id': 'descAB'}}, {key: '13', desc: {_id: 'descAC'}}
    ];
    let result =  [{key: '12', desc:['descA', 'descB', 'descC']}, {key: '13', desc:['descA','descAB', 'descAC']}];
            Asked
            
        
        
            Active
            
        
            Viewed 43 times
        
    -6
            
            
         
    
    
        User863
        
- 19,346
- 2
- 17
- 41
 
    
    
        D.Sreenivasreddy
        
- 3
- 2
- 
                    here: https://stackoverflow.com/questions/14446511/most-efficient-method-to-groupby-on-an-array-of-objects and here:https://stackoverflow.com/questions/14446511/most-efficient-method-to-groupby-on-an-array-of-objects – sk2andy Dec 23 '19 at 13:02
1 Answers
0
            
// if duplicate _id's are allowed for the desc key
const result = [...new Set(articles.map(v => v.key))].map((val => ({key: val, desc: articles.filter(v => v.key === val).map(x => x.desc._id)})));
console.log(result);
// if only unique _id's are allowed
const result1 = [...new Set(articles.map(v => v.key))].map((val => ({key: val, desc: [...new Set(articles.filter(v => v.key === val).map(x => x.desc._id))]})));
console.log(result1);
 
    
    
        pank
        
- 132
- 1
- 3