2017-11-02 14 views
1

私は必要でない2つの配列を比較したいと思います。私はImmutableJS(fromJS)を使用しようとしましたが、順序のない配列では動作しません。 、でなければならない例アレイをご覧下さい等しい順序のない配列を深く比較するにはどうすればいいですか?

まず配列

[ 
     { 
      Jnam: 'processor', 
      Ci: 'New York', 
     }, 
     { 
      Jnam: 'keyboard', 
      Ci: 'Washington', 
     }, 
     { 
      Jnam: 'display', 
      Ci: 'Seattle', 
     }, 
] 

セカンド

[ 
     { 
      Jnam: 'keyboard', 
      Ci: 'Washington', 
     }, 
     { 
      Jnam: 'processor', 
      Ci: 'New York', 
     }, 
     { 
      Ci: 'Seattle', 
      Jnam: 'display', 
     }, 
] 

はあなたが状況ということで何をすべきか私に答えてもらえますか?

+3

理由だけではなく、それらを両方とも最初の並べ替えではありませんか? –

+0

と希望の結果は何ですか?ただ真実か偽か? –

+0

[Javascript配列 - 同じ内容の2つのオブジェクト配列をチェックして、順序を無視する]の可能な複製(https://stackoverflow.com/questions/3243275/javascript-arrays-checking-two-arrays-of-objects-for-same) -contents-ignoring-o) –

答えて

1

キーを最初のプロパティとして、値を2番目のプロパティとして、2番目の配列をチェックしてハッシュテーブルを作成できます。

ハッシュが見つかった場合、デクリメントハッシュで正確なカウントを確認します。

function getKeyValue(object) { 
 
    var keys = Object.keys(object).sort(); 
 

 
    return { key: keys.join('|'), value: keys.map(function (k) { return object[k]; }).join('|') }; 
 
} 
 

 
var first = [{ Jnam: 'processor', Ci: 'New York', }, { Jnam: 'keyboard', Ci: 'Washington' }, { Jnam: 'display', Ci: 'Seattle' }], 
 
    second = [{ Jnam: 'keyboard', Ci: 'Washington', }, { Jnam: 'processor', Ci: 'New York' }, { Ci: 'Seattle', Jnam: 'display' }], 
 
    hash = Object.create(null), 
 
    count = 0, 
 
    result; 
 

 
first.forEach(function (o) { 
 
    var kv = getKeyValue(o); 
 
    hash[kv.key] = hash[kv.key] || {}; 
 
    hash[kv.key][kv.value] = (hash[kv.key][kv.value] || 0) + 1; 
 
    count++; 
 
}); 
 

 
result = second.every(function (o) { 
 
    var kv = getKeyValue(o); 
 
    count--; 
 
    if (hash[kv.key] && hash[kv.key][kv.value]) { 
 
     hash[kv.key][kv.value]--; 
 
     return true; 
 
    } 
 
}) && !count; 
 

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

+0

それは面白い解決策です。どうもありがとうございます! – AZawalar

関連する問題