如何使用lodash实现这一目标?
我有这个集合
var orginal = [
{ idtsk:1, idevd:1 },
{ idtsk:1, idevd:2 },
{ idtsk:1, idevd:3 },
{ idtsk:2, idevd:4 },
{ idtsk:2, idevd:5 },
]
并希望转变为:
var result = [
{ idtsk:1, idevd:[{Id:1},{Id:2},{Id:3}] },
{ idtsk:2, idevd:[{Id:4},{Id:5}] }
]
感谢
答案 0 :(得分:1)
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);
答案 1 :(得分:0)
您可以使用数组的.groupBy
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)