【问题标题】:how to find the difference between two complex json objects?如何找到两个复杂的 json 对象之间的区别?
【发布时间】:2017-05-31 11:18:56
【问题描述】:

我在 nodejs 中实现长轮询,谷歌 api 在每次请求后发送复杂的 json 对象。我怎样才能快速找到现在查询的资源与之前查询的资源之间的差异。这样我可以获取最新的资源并执行我的操作。

[ 
  { kind: 'y',
    etag: 'some etag',
    id: '1',
    snippet:
     { videoId: 'vid1',
       top: [Object],
       isPublic: true } },
  { kind: 'y',
    etag: 'Some Etag',
    id: '2',
    snippet:
     { videoId: vid,
       top: [Object],
      isPublic: true } 
  }
]

这是数据 api 的示例响应。如您所见,该数组有两个对象。现在,假设我在 5 分钟后再次请求 api。api 返回一个包含三个对象的数组。对于这个例子,假设它包含一个新的加上上面提到的两个。现在,我如何提取新的。

我的问题的核心是说数组表示一个包含三个元素的集合和另一个包含两个元素的集合。分别为 A 和 B。我如何找到 A - B。

【问题讨论】:

    标签: node.js long-polling google-data-api


    【解决方案1】:

    更新根据问题更新。 假设您具有以下数据结构:

    const oldData = [ 
      { 
        kind: 'y', 
        etag: 'some etag', 
        id: '1', 
        snippet: { 
          videoId: 'vid1', 
          top: [Object], 
          isPublic: true 
        } 
      }, 
      { 
        kind: 'y', 
        etag: 'Some Etag', 
        id: '2', 
        snippet: { 
          videoId: vid, 
          top: [Object], 
          isPublic: true 
        } 
      }
    ];
    

    你收到了一些newData,我会去简单的过滤器::

    const reallyNewData = newData.filter( item => {
      return !oldData.some(el => el.id === item.id);
    });
    

    所以基本上我们使用 ES5 数组方法 filtersome

    【讨论】:

    • 但是我如何提取两个对象之间的变化有点像集合差异。
    • 我用一些示例对象编辑了上面的帖子。
    • 谢谢你,像魅力一样工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 2015-12-16
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多