Ramda,数组相等而不考虑顺序

Ramda, array equality regardless of order

当比较数组时,ramda equals 只有在两个数组以相同的顺序保存相同的值时才会 return 为真。

我需要一个函数来检查两个数组是否包含完全相同的值,但忽略值出现的顺序。

目前我是这样做的:

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

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

但我想知道是否有更'out of the box'的解决方案?

我觉得你的回答很好。稍微短一点的是

const equalIgnoreOrder = compose(isEmpty, symmetricDifference)

我觉得这更合乎逻辑,因为检查相同的元素更像是一个差异问题,而不是联合问题;与涉及 length 的集合相比,它感觉更接近集合的数学概念。但这在这里是一个很小的问题。