我知道我可以使用循环来做到这一点,但我正试图找到一种优雅的方式来做到这一点:
我有两个锯齿状的数组(数组的数组):
var array1 = [['a', 'b'], ['b', 'c']];
var array2 = [['b', 'c'], ['a', 'b']];
我想用lodash
来确认上面两个锯齿状数组是一样的。 “相同”是指 array1
中没有不包含在 array2
中的项目。请注意,交错数组中的项目实际上是数组。所以我想比较内部数组。
就检查这些项目之间的相等性而言:
['a', 'b'] == ['b', 'a']
或
['a', 'b'] == ['a', 'b']
两者都有效,因为字母总是按顺序排列的。
更新:最初的问题是谈论“数组”(而不是锯齿状数组),多年来许多人讨论(并添加了答案)关于比较简单的一维数组(没有注意到问题中提供的示例实际上与他们期望的简单一维数组并不相似。
最佳答案
如果对外部数组进行排序,可以使用_.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()
不会改变数组。
关于javascript - 使用lodash比较锯齿状数组(项目无序存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29951293/