Ramda,数组相等无论顺序如何

时间:2018-06-10 11:48:53

标签: javascript ramda.js

比较数组时,只有当两个数组以相同的顺序保持相同的值时,ramda equals才会返回true。

我需要一个函数来检查两个数组是否保持完全相同的值,但忽略值发生的顺序。

现在我这样做:

const equalLength = (arr1, arr2) => arr1.length === arr2.length

export const equalIgnoreOrder = (arr1, arr2) =>
  equalLength(arr1, arr2) && equalLength(arr1, R.union(arr1, arr2))

但我想知道是否有更多“开箱即用”的解决方案?

1 个答案:

答案 0 :(得分:4)

我认为你的答案很好。稍微短一点就是

const equalIgnoreOrder = compose(isEmpty, symmetricDifference)

这对我来说更合乎逻辑,因为检查相同的元素感觉更像是一个差异问题而不是工会;它比集合length更接近集合的数学概念。但这是一个非常小的问题。