Javascript 将2个jSON文件与相同的对象进行比较

Javascript 将2个jSON文件与相同的对象进行比较,javascript,jquery,json,get,getjson,Javascript,Jquery,Json,Get,Getjson,所以我有两个jSON文件,都有相同的设置和相同的对象,不同的是一个有未更新的旧数据,另一个有实时更新的实时数据,我想用新数据减去旧数据,然后输出结果 我使用的代码不成功: jQuery.getJSON(liveDataURL, function(liveData){ jQuery.getJSON(oldDataURL, function(oldData){ liveData.sort(function(a, b){ return a.numb

所以我有两个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);
}
var newList=[];
对于(var i=0;i
你说的减法是什么意思

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

我的解决方案不处理数组:-)-读者练习。“returna.number-b.number”返回一个过滤结果,首先显示数字最高的结果。首先,我用它来为我的列表排序最高的数量,然后我想将两个列表的结果相互减去。