Implementing using _.reduce && es6 reduce
Link to codepen: https://codepen.io/Zentro/pen/PmVJww?editors=0011
When using do not forget about: 1. accumulator - the 1st argument of the iteratee function | function ( result , item) 2. default accumulator, which takes 3 arguments and in this case is an object | {}
Why may need lodash ? Lodash allows you to apply reduce not only to the array but also to the {} object.
const docs = [ {type: 'ps', number: '123456'}, {type: 'psp', number: '223456'}, {type: 'psp', number: '423456'}, {type: 'vul', number: '823456'}, ]; // lodash reduce var reducedDocs = _.reduce(docs, function (result, item) { (result[item.type] || (result[item.type] = [])).push({'number': item.number}); return result; }, {}); console.log('reducedUsers', reducedDocs) // es6 reduce var es6reduce = docs.reduce((result, item) =>{ (result[item.type] || (result[item.type] = [])).push({ 'number': item.number }); return result }, {}); console.log('es6reduce', es6reduce);
const docscannot be changed.const- Aliaksandr Pitkevich