gpt4 book ai didi

javascript - 检查两个对象之间的键是否匹配的最简单方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:10:36 25 4
gpt4 key购买 nike

假设您有两个嵌套相当多的对象...

const objA = {
one: {
a: 10,
b: 'string1',
c: {
d: 10
}
},
two : 'string1'
}

const objB = {
one: {
a: 20,
b: 'string2',
c: {
d: 20
}
},
two : 'string2'
}

有没有一种简单的方法来检查它们之间的所有键是否匹配?

*匹配:两个对象在同一个嵌套位置有相同的键,没有多余的键,所以objAobjB匹配

最佳答案

在纯 Javascript 中,您可以获取键、比较长度并迭代键并检查值是否为对象。

function compareKeys(a, b) {
var keysA = Object.keys(a),
keysB = Object.keys(b);
return keysA.length === keysB.length
&& keysA.every(k => b.hasOwnProperty(k) && (
a[k] && typeof a[k] === 'object' ||
b[k] && typeof b[k] === 'object'
? compareKeys(a[k], b[k])
: true));
}

const
objA = { one: { a: 10, b: 'string1', c: { d: 10 } }, two : 'string1' },
objB = { one: { a: 20, b: 'string2', c: { d: 20 } }, two : 'string2' },
objC = { one: { a: 20, b: 'string2', c: { d: 20, e: false } }, two : 'string2' };

console.log(compareKeys(objA, objB));
console.log(compareKeys(objA, objC));
console.log(compareKeys({ a: {} }, { a: "test" }));
console.log(compareKeys({ a: "test" }, { a: {} }));
console.log(compareKeys({ a: { b: "new str" } }, { a: "test" }));

关于javascript - 检查两个对象之间的键是否匹配的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54871587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com