2017-10-06 21 views
-2

2つのjSONファイルは、同じセットアップと同じオブジェクトを使用していますが、違いは1つは更新されていない古いデータがあり、もう1つはリアルタイムでリアルタイムに更新されます新しいデータで古いデータを差し引いて結果を出力したいと思います。同じオブジェクトを持つ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

これは私が望んでいたもののために動作しませんでした - "B"

を:と仮定

する。申し訳ありません –

0

減算を意味しますか?

= {FOO:17、バー12、バズ:偽} B = {FOO:17、バー:10}

何をして " - 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"これは、最初に最も番号の大きいものを示すフィルタ結果を返します。私はそれを使用して私のためのリストをソートしてから、最初に最も高い金額で、次に2つのリストの結果をお互いから差し引いてみたい。 –

関連する問題