Javascript 对象数组的lodash和

Javascript 对象数组的lodash和,javascript,lodash,Javascript,Lodash,我刚刚开始学习lodash,并尝试将其纳入我的代码中。如您所见,我正在添加employee下每个元素的权重。问题是,我不知道如何将第三个元素“性别”放入我的最终数据数组中。我用它来构造我的lodash代码。您可以在下面看到我如何尝试获得我的输出 var userAns=[{ id:1, 正文:“答复1”, 雇员:[{ 姓名:“约翰”, 体重:3, 性别:“男性” }, { 姓名:“莎莉”, 体重:4, 性别:“女性” } ] }, { id:2, 案文:“答复2”, 雇员:[{ 姓名:“约翰”

我刚刚开始学习lodash,并尝试将其纳入我的代码中。如您所见,我正在添加employee下每个元素的权重。问题是,我不知道如何将第三个元素“性别”放入我的最终数据数组中。我用它来构造我的lodash代码。您可以在下面看到我如何尝试获得我的输出

var userAns=[{
id:1,
正文:“答复1”,
雇员:[{
姓名:“约翰”,
体重:3,
性别:“男性”
},
{
姓名:“莎莉”,
体重:4,
性别:“女性”
}
]
},
{
id:2,
案文:“答复2”,
雇员:[{
姓名:“约翰”,
体重:6,
性别:“男性”
},
{
姓名:“莎莉”,
体重:3,
性别:“女性”
}
]
}
];
var得分=[];
对于(var i=0;i

您可以使用lodash
查找
方法,然后
从对象中提取所需的键,并使用
获取对象的值,并将其分配给最终结果对象的性别键

var userAns=[{
id:1,
正文:“答复1”,
雇员:[{
姓名:“约翰”,
体重:3,
性别:“男性”
},
{
姓名:“莎莉”,
体重:4,
性别:“女性”
}
]
},
{
id:2,
案文:“答复2”,
雇员:[{
姓名:“约翰”,
体重:6,
性别:“男性”
},
{
姓名:“莎莉”,
体重:3,
性别:“女性”
}
]
}
];
var得分=[];
对于(var i=0;id.name==key),'gender'))[0],
分数:\ u0(分数)。筛选({
姓名:key
}).sumBy(“重量”)
};
})
.value();
控制台日志(结果)

您可以使用lodash
查找
方法,然后
从对象中提取所需的键,并使用
获取对象的值,并将其分配给最终结果对象的性别键

var userAns=[{
id:1,
正文:“答复1”,
雇员:[{
姓名:“约翰”,
体重:3,
性别:“男性”
},
{
姓名:“莎莉”,
体重:4,
性别:“女性”
}
]
},
{
id:2,
案文:“答复2”,
雇员:[{
姓名:“约翰”,
体重:6,
性别:“男性”
},
{
姓名:“莎莉”,
体重:3,
性别:“女性”
}
]
}
];
var得分=[];
对于(var i=0;id.name==key),'gender'))[0],
分数:\ u0(分数)。筛选({
姓名:key
}).sumBy(“重量”)
};
})
.value();
控制台日志(结果)

您可以在不使用lodash的情况下完成此任务。您可以使用
array#reduce
首先将所有
员工
数组累积到每个
用户
中,然后再次使用
array#reduce
计算
权重
。然后,使用
Object.values()

var userAns=[{id:1,文本:“answer1”,员工:[{name:“John”,体重:3,性别:“男”},{name:“Sally”,体重:4,性别:“女”},{id:2,文本:“answer2”,员工:[{name:“John”,体重:6,性别:“男”},{name:“Sally”,体重:3,性别:“女”};
var result=userAns
.reduce((r,o)=>r.concat(o.employee),[])
.减少((r,o)=>{
if(r[o.name])
r[o.name].重量+=o.weight;
其他的
r[o.name]=o;
返回r;
},{});
变量输出=对象值(结果);

控制台日志(输出)您可以在不使用lodash的情况下完成此操作。您可以使用
array#reduce
首先将所有
员工
数组累积到每个
用户
中,然后再次使用
array#reduce
计算
权重
。然后,使用
Object.values()

var userAns=[{id:1,文本:“answer1”,员工:[{name:“John”,体重:3,性别:“男”},{name:“Sally”,体重:4,性别:“女”},{id:2,文本:“answer2”,员工:[{name:“John”,体重:6,性别:“男”},{name:“Sally”,体重:3,性别:“女”};
var result=userAns
.reduce((r,o)=>r.concat(o.employee),[])
.减少((r,o)=>{
if(r[o.name])
r[o.name].重量+=o.weight;
其他的
r[o.name]=o;
返回r;
},{});
变量输出=对象值(结果);

控制台日志(输出)

您可以使用、和的组合:

var userAns=[{“id”:1,“text”:“answer1”,“employee”:[{“name”:“John”,“weight”:3,“gender”:“male”},{“name”:“Sally”,“weight”:4,“gender”:“female”},{“id”:2,“text”:“answer2”,“employee”:[{“name”:“John”,“weight”:6,“gender”:“male”},{“name”:“Sally”,“weight”:3,“gender”:“female”}
var user = _(scores).filter({
  name: key
});
return {
  name: key,
  score: user.sumBy('weight'),
  gender: user.get('[0]').gender
};