2017-10-06 91 views
-2

所以我有2个jSON文件,两个具有相同的设置和相同的对象,差异是一个旧数据没有更新,另一个有实时更新的数据时间,我想用新数据减去旧数据,并输出结果。比较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); 
    }); 

任何帮助表示赞赏!

回答

-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); 
} 
+0

这并没有什么,我想工作去做。对不起 –

0

你的意思是减去什么?

一个= {FOO:17条:12,巴兹:假} B = {FOO:17条:10}

什么是 “A - B” 是什么意思?

假设:

“A - B”:= {吧:12,巴兹:假}

像这样将工作:

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

我的解决方案不处理数组:-) - 为读者练习。 – podperson

+0

“return a.number - b.number”这将返回一个筛选结果,该结果显示具有最高号码的结果。我使用它来首先为我排序清单,然后我想从两个清单中减去结果。 –