Javascript 下划线JS:如何通过组合来自两个对象的值来创建新对象?
我遇到了以下情况Javascript 下划线JS:如何通过组合来自两个对象的值来创建新对象?,javascript,jquery,underscore.js,Javascript,Jquery,Underscore.js,我遇到了以下情况 var obj1= [ { "id": 97, "name": "Sample1", "classId": 751, "gradeId": 1, "studentId": 1 }, { "id": 98, "name": "Sample2",
var obj1= [
{
"id": 97,
"name": "Sample1",
"classId": 751,
"gradeId": 1,
"studentId": 1
},
{
"id": 98,
"name": "Sample2",
"classId": 751,
"gradeId": 1,
"studentId": 2
},
{
"id": 97,
"name": "Sample1",
"classId": 751,
"gradeId": 2,
"studentId": 3
},
{
"id": 98,
"name": "Sample2",
"classId": 751,
"gradeId": 2,
"studentId": 4
}
]
现在,如果id相同,我需要以以下形式组合相同的对象值
var obj2=[
{
"id": 97,
"name": "Sample1",
"classId": 751,
"rating":[
{
"gradeId": 1,
"studentId": 1
}
{
"gradeId": 2,
"studentId": 3
}
]
},
{
"id": 98,
"name": "Sample2",
"classId": 751,
"rating":[
{
"gradeId": 1,
"studentId": 2
}
{
"gradeId": 2,
"studentId": 4
}
]
}
]
我正在遍历所有对象,如果id相同,我将创建一个具有组合值的新对象,我觉得这有点复杂
我可以通过更抽象的方式通过下划线js来实现这一点吗?将执行您想要的操作,然后根据需要使用/将组添加到嵌套对象:
var obj2 = _.map(_.groupBy(obj1, "id"), function(group) {
var o = _.omit(group[0], "gradeId", "studentId");
o.rating = _.map(group, function(s) {
return _.pick(s, "gradeId", "studentId");
});
return o;
});
你能分享你的代码吗?遗憾的是,我不知道有下划线或Lodash等价物,但如果你感兴趣,[jQuery.extend]有一个
deep
参数,它执行深度复制,遍历对象的每一层。@Terry:嗯,这对解决这个问题有什么帮助?非常感谢。。!!这有帮助