场景:
const ob1 = {
'a': 'a1',
'b': 'bVal'
}
const ob2 = {
'a': 'a2',
'c': 'cVal'
}
想以生成输出对象的方式合并上述对象:
const output = {
'a': 'a1, a2',
'b': 'bVal',
'c': 'cVal'
}
是否有库方法来实现这一目标?
发布于 2018-09-25 09:01:40
可以使用 Object.assign()和Object.entries():
ob2
并检查输出对象中是否存在该键。如果它存在而不是简单地连接值,如果不是将该属性添加到输出对象。const ob1 = {
'a': 'a1',
'b': 'bVal'
}
const ob2 = {
'a': 'a2',
'c': 'cVal'
};
let output = Object.assign({}, ob1);
Object.entries(ob2).forEach(entry=>{
if(output[entry[0]])
output[entry[0]] += ","+entry[1];
else
output[entry[0]] = entry[1];
});
console.log(output);
发布于 2018-09-25 09:26:25
这是另一种版本,适用于任意数量的输入对象
用途Array.reduce
和Object.entries
:
const ob1 = {
'a': 'a1',
'b': 'bVal'
}
const ob2 = {
'a': 'a2',
'c': 'cVal'
}
const result = [ob1, ob2].reduce((res, item) => {
Object.entries(item).forEach(([k, v]) => res[k] = res[k] ? res[k] + ', ' + v : v);
return res;
}, {});
console.log(result);
https://stackoverflow.com/questions/-100002714
复制相似问题