我有两个 json 对象,其中一个嵌套。例如:
data1 : [{"name": "abc", "age": 26, "title": "xyz", "address": {"street":"yyy","city":"ttt","country":"kkk"}]
date2: [{"color": "blue", "sqad": "jkl", "priority": "rst", "division": "opq", "range": 456}]
我尝试使用扩展运算符和 object.assign 合并它们,但没有得到预期的结果。
我需要像下面这样组合:
[{"name": "abc", "age": 26, "title": "xyz", "address": {"street":"yyy","city":"ttt","country":"kkk"}, "color": "blue", "sqad": "jkl", "priority": "rst", "division": "opq", "range": 456 }]
最佳答案
您可以结合使用递归和扩展运算符:
const deepMerge = (objs) =>
objs.reduce((acc, obj) =>
Object.keys(obj).reduce((innerAcc, key) => ({
...innerAcc,
[key]:
key in acc
? typeof acc[key] === 'object' && acc[key] !== null && typeof obj[key] === 'object' && obj[key] !== null
? deepMerge([acc[key], obj[key]])
: obj[key]
: obj[key]
}), acc),
{})
const data1 = { name: 'abc', age: 26, title: 'xyz', address: { street: 'yyy', city: 'ttt', country: 'kkk' } }
const data2 = { color: 'blue', squad: 'jkl', priority: 'rst', division: 'opq', range: 456 }
const result = deepMerge([data1, data2])
console.log(result)
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 深度合并两个 json 对象 es6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58618542/