繁体   English   中英

使用JavaScript,如何遍历2个JSON对象,比较它们的字段并根据比较创建一个新的JSON object?

[英]Using JavaScript, how to traverse 2 JSON objects, compare their fields and create a new JSON object based on the comparison?

我的应用程序从不同的端点获得 2 个 JSON(我已经更改了一些隐私值,但键未被触及)对象作为响应。

Object 1

{
   "data":{
      "posts":{
         "edges":[
            {
               "node":{
                  "id":"cG9zdDoyOA==",
                  "date":"2021-08-14T04:10:10",
                  "title":"At vero eos et",
                  "slug":"At vero eos et",
                  "extraPostInfo":{
                     "authorExcerpt":"At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga.",
                     "thumbImage":"https://res.cloudinary.com/image.jpg",
                     "previewImage":"https://res.cloudinary.com/image.jpg"
                  },
                  "author":{
                     "node":{
                        "name":"et accusamus",
                        "id":"dXNlcjoz"
                     }
                  }
               }
            },
            {
               "node":{
                  "id":"cG9zdDoyMA==",
                  "date":"2021-08-07T07:06:15",
                  "title":"At vero eos et",
                  "slug":"At vero eos et",
                  "extraPostInfo":{
                     "authorExcerpt":"At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga.",
                     "thumbImage":"https://preview.redd.it/w3kr4m2fi3111.png?auto=webp&s=b4fb4bdfd262de01e49b9f7463d784c6d9013a1b",
                     "previewImage":"https://preview.redd.it/w3kr4m2fi3111.png?auto=webp&s=b4fb4bdfd262de01e49b9f7463d784c6d9013a1b"
                  },
                  "author":{
                     "node":{
                        "name":"et accusamus",
                        "id":"dXNlcjoy"
                     }
                  }
               }
            }
         ]
      }
   },
   "extensions":{
      "debug":[
         {
            "type":"DEBUG_LOGS_INACTIVE",
            "message":"GraphQL Debug logging is not active. To see debug logs, GRAPHQL_DEBUG must be enabled."
         }
      ]
   }
}

Object 2

{
   "usersData":[
      {
         "id":"FJ0i4926gbHnSHAPgF4U",
         "name":"Et harum quidem",
         "imageURL":"https://res.cloudinary.com/image.jpg",
         "role":"author",
         "wpID":"dXNlcjoz"
      },
      {
         "id":"IQxFku4Xhqf5mPmfbYgX",
         "name":"Et harum quidem",
         "role":"author",
         "imageURL":"https://res.cloudinary.com/image.jpg",
         "wpID":"cG9zdDoyMA=="
      }
   ]
}

我想遍历这两个对象并将object 1中的idwpID 2中的 wpID 进行比较。 如果它们相等,我想将object 2中的imageURL (键和值)注入object 1 edges.author.node元素并返回一个新更新的object 3 ,这将是object 1的超集,其特定值为8828299854028 .

*我尝试在两个对象上使用 map function,但我仍然无法使其工作。 任何帮助将不胜感激。 如果我确实找到了解决方案,我会发布它。

我认为你可以这样做:

obj1.data.posts.edges.forEach(edge => {
  const imageURL = findImage(edge.node.id);
  if (imageURL) {
    edge.node.author.node['imageURL'] = imageURL;
  }
});

function findImage(id) {
  const user = obj2.usersData.find(data => data.wpID === id);
  if (user) {
    return user.imageURL;
  } else {
    return '';
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM