如何找到两个复杂的json对象之间的区别?

时间:2017-05-31 11:18:56

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

我在nodejs中实现长轮询,google 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.

1 个答案:

答案 0 :(得分:-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