Javascript 如果匹配项返回这些值,如何比较两个json对象?

Javascript 如果匹配项返回这些值,如何比较两个json对象?,javascript,node.js,Javascript,Node.js,我有两个json数据对象,如下所示: const currentUser = {"subAccount":{"setup":true, "edit": true, "delete": true}}; const parentUser = {"subAccount":{"setup":true, "edit": true}, "game":

我有两个json数据对象,如下所示:

const currentUser = {"subAccount":{"setup":true, "edit": true, "delete": true}};
const parentUser = {"subAccount":{"setup":true, "edit": true}, "game": {"edit"}};
我想比较两个json数据中的对象是否匹配

预期数据:

{
  "subAccount": {
     "setup": true,
     "edit": true
   }
}

请先帮我一个忙,谢谢。

我将写一个这样的递归函数

function compare(current, parent) {
    let result = {};
    for (let key of Object.keys(parent)) {
        if (parent[key] != undefined) {
            if (typeof current[key] == "object") {
                result[key] = compare(current[key], parent[key]);
            }
            else {
                if (current[key] == parent[key]) {
                    result[key] = current[key];
                }
            }
        }
    }
    return result;
}
const main=()=>{
const currentUser={
子账户:{
设置:对,
编辑:对,
删除:真
},
};
常量parentUser={
子账户:{
设置:对,
编辑:对,
},
游戏:{
编辑:真
}
}
const result=compareTwoObj(当前用户、父用户);
//打印结果;
log('result==>',JSON.stringify(result));
}
常量compareTwoObj=(obj1,obj2)=>{
常量公共={};
for(对象的常量键。键(obj2)){
如果(obj2[键]!==未定义){
if(obj1的类型[键]=“对象”){
公共[key]=比较对象对象bj(obj1[key],obj2[key]);
}
否则{
如果(obj1[键]==obj2[键]){
公共[键]=obj1[键];
}
}
}
}
返回普通;
}

main()嘿,你的两个对象是否总是具有相同的嵌套级别?如果是,那么您可以迭代对象键并使用reduce函数创建新对象。是某些数据结构的文本表示形式,通常是对象或数组。
currentUser
parentUser
都是JavaScript对象,仅此而已。它们不需要在属性名周围加引号(当属性名不符合JS变量名的规则时,需要加引号)。在属性名周围添加引号并不能使其成为JSON。谢谢@aditya81070。“不,不是,先生。”ChantySok如果对象具有任意深度,那么我建议编写一个递归函数,将一个对象级别与第二个对象的每个级别进行比较。例如
{a:'b',c:{d:'f'}
{a:{e:{d:'f'}
,将把
a
与深嵌套对象进行比较。@aditya81070能帮我一下吗?谢谢你的回答。它很好。但是,当我将它添加到我的代码中时。它显示错误eslint,消息为no restricted syntax iterators/Generators可能是因为ForOfStatement而给你一个错误,所以你可以从ForOfStatement更改为ForLoop陈述