我知道我可以使用循环来做到这一点,但是我试图找到一种优雅的方式来做到这一点:
我有两个数组:
var array1 = [['a', 'b'], ['b', 'c']]; var array2 = [['b', 'c'], ['a', 'b']]; 我想使用lodash确认两者相同。“相同”是指array1中没有未包含在array2中的项目。
在检查这些项目之间的相等性方面:
['a', 'b'] == ['b', 'a'] 要么
['a', 'b'] == ['a', 'b'] 两者都可以工作,因为字母始终是有序的。
提前致谢。 问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
如果对外部数组进行排序,则可以使用,_.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()不会改变数组。