19

次のような配列の配列があります。

[["Some string", "Some other string"],["Some third string", "some fourth string"]]

Underscore_.allのメソッドを使用して、すべての配列が 100% 一致する (つまり、すべての値が一致する) かどうかを判断できると思いますが、チェックを実行するために必要な反復子をどのように記述すればよいかわかりません。

誰にもアイデアがありますか?

4

9 に答える 9

11

アンダースコアを使用して 2 つの違いを判断し、配列の長さを確認します。これを行う簡単な方法は次のとおりです。

_.isEmpty(_.difference(array1, array2)) && _.isEmpty(_.difference(array2, array1))

trueこれは、それらが同じ場合とそうでない場合に返さfalseれます。

于 2014-05-13T02:12:20.277 に答える
4
_.isEmpty(_.xor(array1, array2))
于 2014-07-22T14:03:37.887 に答える
2

要素が同じで同じ順序であることを確認したい場合は、次のようにします。

arrayEq = function(a, b) {
  return _.all(_.zip(a, b), function(x) {
    return x[0] === x[1];
  });
};

Coffeescriptでさらにきれいに:

arrayEq = (a,b) ->
    _.all _.zip(a,b), (x) -> x[0]==x[1]
于 2012-07-03T07:37:31.397 に答える
0

Dan Tao の回答についてコメントすることはできません。最初の配列自体のチェックをスキップするための小さな変更 (不要な _.difference 呼び出し)

function allArraysAlike(arrays) {
    return _.all(arrays, function(array) {
        if(array === arrays[0]) return true;
        return array.length == arrays[0].length && _.difference(array, arrays[0]).length == 0;
    });
}
于 2015-03-04T15:24:38.723 に答える