我很难合并来自javascript的两个对象,我使用下划线并尝试了许多尝试,但用谷歌搜索,但是我无法实现我的目标,请参见下面的两个对象:
// Obj A
[{
"activite":"Danser le rock",
"categorie":"Activités physiques",
"selected":true
},
{
"activite":"Danses latino",
"categorie":"Activités physiques",
"selected":true
}]
// Obj B
[{
"activite":"Danser le rock",
"categorie":"Activités physiques",
},
{
"activite":"Danses latino",
"categorie":"Activités physiques",
},
{
"categorie":"Activités physiques",
"activite":"Danses latino"
}]
这是一次尝试
function updateCentres(obj1, obj2) {
for (var p in obj2) {
if (obj1[p]) {
_.extend(obj1[p], obj2[p]);
} else {
obj1[p] = obj2[p];
}
}
}
updateCentres(objA, objB) //<== outputs undefined
在这里,我必须从objA更新objB,事实上我想将selected:true注入对应的内容,有人可以帮我吗? 谢谢。
答案 0 :(得分:1)
实际上,您的对象是可以用for .. of
轻松迭代的数组。现在,您可以通过遍历objA
(不好意思,只是说一遍)将每个活动映射到所选属性,然后可以遍历objB
并添加该所选属性:
const isSelected = new Map();
for(const { activite, selected } of objA)
isSelected.set(activite, selected);
for(const event of objB)
event.selected = isSelected.get(event.activite);