开发者社区 问答 正文

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

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

我有两个数组:

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

展开
收起
保持可爱mmm 2020-02-08 10:56:24 1124 分享 版权
1 条回答
写回答
取消 提交回答
  • 如果对外部数组进行排序,则可以使用,_.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()不会改变数组。

    2020-02-08 10:56:37
    赞同 展开评论
问答地址: