2017-10-06 86 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」這將返回一個篩選結果,該結果顯示具有最高號碼的結果。我使用它來首先爲我排序清單,然後我想從兩個清單中減去結果。 –