我知道我可以使用循环来做到这一点,但我试图找到一种优雅的方式来做到这一点:
我有两个数组:
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()或扩展运算符(…)进行复制.
或者,丹尼尔·布迪克在下面的评论中推荐:
_.isEqual(_.sortBy(array1), _.sortBy(array2))
Lodash的sortBy()不会改变数组.