比较2个jSON文件与相同的对象

时间:2017-10-06 17:25:36

标签: javascript jquery json get getjson

所以我有2个jSON文件,两个都有相同的设置和相同的对象,差异是一个有旧数据没有更新,另一个有实时更新的实时数据,我想用新数据减去旧数据,然后输出结果。

我使用的代码不成功:

jQuery.getJSON(liveDataURL, function(liveData){

    jQuery.getJSON(oldDataURL, function(oldData){

        liveData.sort(function(a, b){
             return a.number - b.number;
        }).reverse();
        oldData.sort(function(a, b){
             return a.number - b.number; 
        }).reverse();

        var newList = liveData.number - oldData.number;
        console.log(newList);
    });

感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

减法是什么意思?

a = {foo:17,bar:12,baz:false} b = {foo:17,bar:10}

“a - b”是什么意思?

假设:

“a - b”:= {bar:12,baz:false}

这样的事情会起作用:

const delta = (a, b) => {
  const d = {};
  Object.keys(a).forEach(key => {
    if (typeof a[key] === 'object') {
      d[key] = delta(a[key], b[key] || {});
      if (d[key] === undefined) {
        delete d[key];
      }
    } else {
      if (a[key] !== b[key]) {
        d[key] = a[key];
      }
    }
  });
  return Object.keys(d).length ? d : undefined;
};

答案 1 :(得分:-1)

var newList = liveData.number - oldData.number;

这是找到列表之间差异的错误方法。 只要这样做,如果你想找到数字的差异

假设两个列表的长度相同。

var newList = [];
for (var i = 0; i < liveData.length; i++){
    newList.append(liveData[i].number - oldData[i].number);
}