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