在Javascript中使用Lodash或下划线的具有多列的GroupBy
转换JSON结构时遇到问题。我的JSON结构如下所示在Javascript中使用Lodash或下划线的具有多列的GroupBy,javascript,json,underscore.js,lodash,Javascript,Json,Underscore.js,Lodash,转换JSON结构时遇到问题。我的JSON结构如下所示 const member = [{ memberId: 4, memberName: 'ABC', age: 22, eventId: 5, eventName: 'Dance' }, { memberId: 4, memberName: 'ABC', age: 22, eventId: 6, eventName: 'Music' }, {
const member = [{
memberId: 4,
memberName: 'ABC',
age: 22,
eventId: 5,
eventName: 'Dance'
},
{
memberId: 4,
memberName: 'ABC',
age: 22,
eventId: 6,
eventName: 'Music'
},
{
memberId: 4,
memberName: 'ABC',
age: 22,
eventId: 7,
eventName: 'FootBall'
},
{
memberId: 5,
memberName: 'PQR',
age: 24,
eventId: 6,
eventName: 'Music'
},
{
memberId: 5,
memberName: 'PQR',
age: 24,
eventId: 5,
eventName: 'Dance'
},
]
这里我有两个成员与相关事件。我想如下转换JSON
const member = [
{
memberId: 4,
memberName: 'ABC',
age: 22,
events: [
{
id: 5,
name: 'Dance'
},
{
id: 6,
name: 'Music'
},
{
id: 7,
name: 'FootBall'
}
]
},
{
memberId: 5,
memberName: 'PQR',
age: 24,
events: [
{
id: 6,
name: 'Music'
},
{
id: 5,
name: 'Dance'
}
]
}
]
我尝试使用下面的代码创建结构,但它没有提供所需的输出。它只创建两个键值对
var result = _.chain(member)
.groupBy("memberId")
.pairs()
.map(function(currentItem) {
return _.object(_.zip(["memberId", "events"], currentItem));
})
.value();
我不知道如何在层次结构中添加JSON的其他值。将项目分组后,映射它们。取每组的第一个项目,删除事件属性,并将其展开。要获取事件数据,请映射组的项目并仅获取相关的事件属性:
const member=[{“memberId”:4,“memberName”:“ABC”,“age”:22,“eventId”:5,“eventName”:“Dance”},{“memberId”:4,“memberName”:“ABC”,“age”:22,“memberName”:“ABC”,“age”:22,“eventId”:7,“eventName”:“FootBall”},{“memberId”:5,“memberName”:“PQR”,“age”:24,“eventId”:6,“eventName”:“Music”},{“memberId”:5,“成员名称”:“PQR”,“年龄”:24,“事件ID”:5,“事件名称”:“舞蹈”}]
const result=(成员)
.groupBy('memberId')
.map(组=>({
…省略(u.head(group),['eventId','eventName']),
events:u2;.map(组,o=>({id:o.eventId,name:o.eventName}))
}))
.value();
console.log(结果)
谢谢你的回答,但是当我尝试使用Angular代码时,我得到了一个错误:“下划线\网页包\导入的\模块\分组方式(…)。映射不是函数。”“遗漏了什么。您可能使用下划线而不是lodash,或者您可能在打包东西的方式上有问题。这与问题和答案都没有关系。答案是否符合您的要求?是否可以使用下划线执行此操作?