假设我有两个结构相似的对象。如何找到第一个对象中未包含在第二个对象中的所有键,反之亦然?
例如,我有两个对象:
const foo = {
foo: 'foo',
bar: {
baz: 'baz',
qux: 'qux'
}
};
const bar = {
foo: 'foo',
bar: {
baz: 'baz',
quux: 'quux'
},
corge: 'corge'
};
不同的道具是:foo.bar.qux
,bar.bar.quux
,bar.corge
。找到它们的最佳方法是什么?
答案 0 :(得分:2)
一种方法是创建一个递归函数,深入迭代第一个对象的属性,记住当前属性的路径,并调查第二个对象中是否存在具有这种路径的属性。
此案例已经写了tool。只需安装它:
npm install keys-diff
并使用它:
import keysDiff from 'keys-diff'
const foo = {
foo: 'foo',
bar: {
baz: 'baz',
qux: 'qux'
}
};
const bar = {
foo: 'foo',
bar: {
baz: 'baz',
quux: 'quux'
},
corge: 'corge'
};
keysDiff(foo, bar);
结果应为:
[
[
[ 'bar', 'qux' ]
],
[
[ 'bar', 'quux' ],
[ 'corge' ]
]
]