首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何组合两个给定的嵌套JSON,并在javascript中只返回另一个JSON中的公共值?

如何组合两个给定的嵌套JSON,并在javascript中只返回另一个JSON中的公共值?
EN

Stack Overflow用户
提问于 2022-03-28 06:58:11
回答 1查看 76关注 0票数 -1

例如,我希望将下面的2JSON进行比较,并使用常见的JSON键值对获取返回值。

代码语言:javascript
复制
JSON1 = [{
  "info" : {
    "name": "xyz"
  },
  "add" : "london",
  "no" : 1234,
  "gender" : "male"
}]

另一个JSON是

代码语言:javascript
复制
JSON2 = [{
  "info" : {
    "name": "abc"
  },
  "add" : "london",
  "no" : 2456
}]

需要以JSON的形式返回值,如下所示,但差异应该是空的。

代码语言:javascript
复制
json3 = [{
  "info" : {
    "name": ""
  },
  add : "london",
  no : "",
  gender : male
}]
EN

回答 1

Stack Overflow用户

发布于 2022-03-28 07:21:14

您可以创建一个combineObjects()函数,该函数递归地组合输入对象。

我们将枚举输入对象键,如果两个输入的值不相同,则为每个属性返回一个空值。

如果两个对象中的值相同或缺失,我们将返回obj1或obj2属性的值。

代码语言:javascript
复制
const json1 = [{ "info" : { "name": "xyz" }, "add" : "london", "no" : 1234, "gender" : "male" }];
const json2 = [{ "info" : { "name": "abc"}, "add" : "london", "no" : 2456 }];

function combineObjects(obj1, obj2) {
    const result = {};
    // Get all keys...
    let keys = [...new Set([...Object.keys(obj1), ...Object.keys(obj2)])];
    for(let k of keys) {
        if (obj1[k] && obj2[k] && typeof(obj1[k]) === 'object') {
            result[k] = combineObjects(obj1[k], obj2[k]);
        } else if (obj1[k] === obj2[k]) {
            result[k] = obj1[k];
        } else { 
            result[k] = (obj1[k] && obj2[k]) ? '' : obj1[k] || obj2[k];
        }
    }
    return result;
}

const result = combineObjects(json1, json2);
console.log('Result:', result)
代码语言:javascript
复制
.as-console-wrapper { max-height: 100% !important; }
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/luxon/2.3.1/luxon.min.js" integrity="sha512-Nw0Abk+Ywwk5FzYTxtB70/xJRiCI0S2ORbXI3VBlFpKJ44LM6cW2WxIIolyKEOxOuMI90GIfXdlZRJepu7cczA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71643481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档