underscore.js - 确定数组数组中的所有值是否匹配

Kev*_*ker 19 javascript underscore.js

我有一个数组数组,看起来像这样:

[["Some string", "Some other string"],["Some third string", "some fourth string"]]
Run Code Online (Sandbox Code Playgroud)

我想我可以使用Underscore中_.all方法来确定所有数组是否匹配100%(即它们的所有值都匹配),但我不确定如何编写所需的迭代器来运行检查.

有人有想法吗?

pet*_*ldi 31

为什么不交?(如果你真的想使用一些Underscore函数) http://underscorejs.org/#intersection

如果数组长度相同,并且交集的长度等于数组的长度,则它们都包含相同的值.

  • 我相信这只有在假设数组值是唯一的时才有效 (2认同)

pau*_*kow 21

我的偏好:

_.isEqual(_.sortBy(first), _.sortBy(second))
Run Code Online (Sandbox Code Playgroud)

如果订单很重要:

_(first).isEqual(second)
Run Code Online (Sandbox Code Playgroud)


Dan*_*Tao 14

试试这个人(与订单无关):

function allArraysAlike(arrays) {
  return _.all(arrays, function(array) {
    return array.length == arrays[0].length && _.difference(array, arrays[0]).length == 0;
  });
}
Run Code Online (Sandbox Code Playgroud)

这假设您希望所有数组以相同的顺序包含所有相同的元素(因此对于您的示例输入,函数应该返回false).

  • `_.difference`仅当所述第一阵列的值不存在于所述第二阵列中的检查; 未检测到第二个数组中的其他值; 如果你真的想确保两个数组都是你应该做`_.difference(数组,数组[0]).长度== 0 && _.difference(数组[0],数组).长度== 0相同` (3认同)

Cra*_*les 11

使用下划线确定两者之间的差异,并检查数组的长度.一个简单的方法是:

_.isEmpty(_.difference(array1, array2)) && _.isEmpty(_.difference(array2, array1))
Run Code Online (Sandbox Code Playgroud)

true如果相同则返回,如果不相同则返回false.

  • _.isEmpty(_.差异([],[1,2,3]))返回true但数组不相同.它应该是_.isEmpty(_.差异(array1,array2))&& _.isEmpty(_.difference(array2,array1)) (2认同)