lodash を使用してギザギザの配列を比較する(順序のない項目の存在) 質問する

lodash を使用してギザギザの配列を比較する(順序のない項目の存在) 質問する

ループを使用して実行できることはわかっていますが、これを実行するためのエレガントな方法を見つけようとしています。

2 つのギザギザの配列 (配列の配列) があります。

var array1 = [['a', 'b'], ['b', 'c']];
var array2 = [['b', 'c'], ['a', 'b']];

上記の 2 つのギザギザ配列が同じであることを確認するためにを使用しますlodash。「同じ」とは、array1に含まれていない項目が に存在しないことを意味しますarray2。ギザギザ配列内の項目は実際には配列であることに注意してください。したがって、内部の配列を比較したいと思います。

これらの項目間の等価性を確認する場合:

['a', 'b'] == ['b', 'a'] 

または

['a', 'b'] == ['a', 'b'] 

文字は常に順番に並んでいるので、どちらも機能します。


アップデート: 元の質問は「配列」(ギザギザの配列ではなく)についての話であり、何年もの間、多くの人が単純な 1 次元配列の比較について議論し(そして回答を追加し)、(質問で提供された例が実際には彼らが期待していた単純な 1 次元配列に似ていなかったことに気づかずに)いました。

ベストアンサー1

外側の配列をソートする場合は、_.isEqual()内部配列はすでにソートされているためです。

var array1 = [['a', 'b'], ['b', 'c']];
var array2 = [['b', 'c'], ['a', 'b']];
_.isEqual(array1.sort(), array2.sort()); //true

配列が変更されることに注意してください.sort()。これが問題になる場合は、まず (たとえば).slice()またはスプレッド演算子 ( ...) を使用してコピーを作成してください。

または、以下のコメントで Daniel Budick が推奨している手順に従ってください。

_.isEqual(_.sortBy(array1), _.sortBy(array2))

Lodash はsortBy()配列を変更しません。

おすすめ記事