chr*_*ndy 5 javascript nested object javascript-objects
我有两个 JavaScript 对象(任意深度),它们具有许多相同的信息。
我正在寻求帮助获取两个对象之间的共享数据。
例如:
const a = {
name: 'Alice',
features: {
speed: 3,
strength: 90,
mind: {
power: 42
}
}
};
const b = {
name: 'Bob',
features: {
speed: 3,
stamina: 1,
mind: {
power: 42,
flexibility: 0,
telekinesis: 42
}
}
};
Run Code Online (Sandbox Code Playgroud)
我的目标是提出一个解决方案来生成他们共享的数据:
const shared = {
features: {
speed: 3,
mind: {
power: 42
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在操作的真实数据是任意深度嵌套的(通常是对象内的数十个对象),但我希望上面的示例有所帮助。
这是一项一次性任务,因此我并不特别关心性能,并且只要它可以工作,我很乐意使用任何库。谢谢您的帮助!
当对象值为 时,该线程中的其他答案似乎崩溃了undefined,因此我结合了每个答案的最佳部分,得出了一个可靠的解决方案:
const isObj = x => typeof x === 'object'
const common = (a, b) => {
let result = {}
if (([a, b]).every(isObj)) {
Object.keys(a).forEach((key) => {
const value = a[key]
const other = b[key]
if (isObj(value)) {
result[key] = common(value, other)
} else if (value === other) {
result[key] = value
}
})
}
return result
}
Run Code Online (Sandbox Code Playgroud)