如果我有两个对象:
const obj1 = {
"1,1" : "hello",
}
和
const obj2 = {
"1,1" : "hi",
}
合并它们的最简单方法是什么:
obj3 = {
"1,1": ["hello", "hi"],
}
我可以在这里使用扩展运算符吗?谢谢!
发布于 2018-05-16 20:31:16
另一种方法是使用函数reduce
。
const obj1 = {"1,1" : "hello"},
obj2 = {"1,1" : "hi"},
obj3 = [obj1, obj2].reduce((a, c) => {
Object.keys(c).forEach(k => (a[k] || (a[k] = [])).push(c[k]));
return a;
}, {});
console.log(obj3);
.as-console-wrapper { max-height: 100% !important; top: 0; }
发布于 2018-05-16 20:37:49
一种简单的方法是使用内部for (..在...)javascript :例如
obj1 = {1 : 2};
obj2 = {1 : 3};
obj3 = {};
for (element1 in obj1) {
for (element2 in obj2) {
if (element1 == element2) {
obj3[element1] = [];
obj3[element1].push(obj1[element1]);
obj3[element1].push(obj2[element2]);
}
}
}
//result : obj3 = {1 : [2,3]}
但是如果obj1 = {"1,1“:2,1.1 : 3}或者obj1 = {"1,1”:1,2,3,4}呢?你确实需要“很好地定义”你的需求,但这应该是一个很好的开始。
发布于 2018-05-16 20:41:42
var obj1 = {
a: 1,
b: 2
};
var obj2 = {
a: 12,
c: 20
};
console.log(merge(obj1, obj2));
function merge(obj1, obj2) {
var obj3 = {};
Object.keys(obj1).forEach(function(key) {
pushIntoObj3(key, obj1[key]);
});
Object.keys(obj2).forEach(function(key) {
pushIntoObj3(key, obj2[key]);
});
function pushIntoObj3(key, val) {
if (!obj3[key]) {
obj3[key] = [];
}
obj3[key].push(val);
}
return obj3;
}
输出:
{
"a": [ 1, 12 ],
"b": [ 2 ],
"c": [ 20 ]
}
https://stackoverflow.com/questions/50370916
复制相似问题