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

Compare 2 jSON files with same objects

所以我有 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);
    });

感谢任何帮助!

var newList = liveData.number - oldData.number;

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

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

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

减法是什么意思?

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;
};