javascript – 使用lodash比较数组(项目存在没有顺序)

我知道我可以使用循环来做到这一点,但我试图找到一种优雅的方式来做到这一点:

我有两个数组:

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()不会改变数组.

上一篇:javascript – 如何使用Lodash基于密钥合并两个集合?


下一篇:javascript – 如何导入单个Lodash功能?