2017-07-05 24 views
0

javascriptで値の配列を含む2つのハッシュマップを比較するにはどうすればよいですか?ハッシュマップ配列の値とJavaScriptの比較

例:これは

第一=>

1234 : [1.03 , 2.17 , 3] 
1235 : [1 , 4 , 5] 
1236 : [2 , 3 , 3] 
1237 : [0.33 , 1.51 , 5] 

第二=>

1234 : [1.03 , 2.17 , 3] 
1235 : [1.17 , 2 , 3.9] 
1236 : [2 , 3 , 3] 
1237 : [2 , 1 , 5] 

結果、私の2つのハッシュマップ

=>

1235 : [1 , 4 , 5] 
1237 : [0.33 , 1.51 , 5] 

(目標だとしましょう最初のものとそれを比較することです最初のハッシュマップのどのキーと値がコヒーレントでないかを表示します)。

+1

あなたはこれまでに何を試しましたか? –

+0

サイクルと比較を使用 – k102

+0

常に、関連するコードを追加してください。 [mcve]を作成します。 – evolutionxbox

答えて

0

私の値は文字列ではなく配列したときに私が最初にこれをしなかった:

compareHashMap: function(iAdaptation, iActual){ 
       var difference = {}; 
       Object.keys(iActual).forEach(function(k){ 
        if(iAdaptation[k] !== iActual[k]){ 
         difference[k] = iActual[k]; 
        } 
       }); 
       return difference; 
      }, 

PS:iAdaptationとiActualは、あなたが使用することができます

+2

回答を追加するのではなく、この情報で質問を編集する必要があります。 – Phylogenesis

+0

しかし、最も単純な変更は、あなたの比較で 'JSON.stringify()'を使うことです。 if(JSON.stringify(iAdaptation [k])!== JSON.stringify(iActual [k])){...} 'のようなものです。 – Phylogenesis

+0

@Phylogenesisの結果値は文字列ではなく配列でなければなりません。JSON.stringfyは文字列を返します – Benkk

0

ハッシュマップですArray.prototype.filter()Array.prototype.map()

const one = {1234: [1.03, 2.17, 3],1235: [1, 4, 5],1236: [2, 3, 3],1237: [0.33, 1.51, 5]}; 
 
const two = {1234: [1.03, 2.17, 3],1235: [1.17, 2, 3.9],1236: [2, 3, 3],1237: [2, 1, 5]}; 
 
const result = Object.keys(one) 
 
    .filter(k => one[k].toString() !== two[k].toString()) 
 
    .map(k => ({[k]: one[k]})); 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

それは動作しませんでした: TypeError例外を:あなたが見ることができるように取り組んでいるコード例ではArray.filter(ネイティブ) – Benkk

+0

でObject.keys.filter.k で未定義 のプロパティ「のtoString」を読み取ることができません。.. DOBLEコードを確認してください –