Reputation: 2847
how to achieve this using lodash?
I have this collection
var orginal = [
{ idtsk:1, idevd:1 },
{ idtsk:1, idevd:2 },
{ idtsk:1, idevd:3 },
{ idtsk:2, idevd:4 },
{ idtsk:2, idevd:5 },
]
and wanna transform into this:
var result = [
{ idtsk:1, idevd:[{Id:1},{Id:2},{Id:3}] },
{ idtsk:2, idevd:[{Id:4},{Id:5}] }
]
thanks
Upvotes: 0
Views: 118
Reputation: 8509
var arr = [
{ idtsk:1, idevd:1 },
{ idtsk:1, idevd:2 },
{ idtsk:1, idevd:3 },
{ idtsk:2, idevd:4 },
{ idtsk:2, idevd:5 },
];
var result = _(arr).groupBy('idtsk').map((item, key) => {
return {
idtsk: parseInt(key),
idevd: _(item).map((innerItem) => {
return {
id: innerItem.idevd
}
}).value()
}
}).value();
console.log(result);
https://jsfiddle.net/farq9dpp/1/
Upvotes: 1
Reputation: 7742
You can do with .groupBy
of array
var test = [
{ idtsk:1, idevd:1 },
{ idtsk:1, idevd:2 },
{ idtsk:1, idevd:3 },
{ idtsk:2, idevd:4 },
{ idtsk:2, idevd:5 },
]
var groups = _.groupBy(test,'idtsk');
var result = Object.keys(groups).map(function(key){
return {
idtsk:parseInt(key),
idevd:groups[key].map(function(x){
return {Id:x.idevd};
})
}
});
console.log(result)
Upvotes: 0