比较数组时,只有当两个数组以相同的顺序保持相同的值时,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))
但我想知道是否有更多“开箱即用”的解决方案?
答案 0 :(得分:4)
我认为你的答案很好。稍微短一点就是
const equalIgnoreOrder = compose(isEmpty, symmetricDifference)
这对我来说更合乎逻辑,因为检查相同的元素感觉更像是一个差异问题而不是工会;它比集合length
更接近集合的数学概念。但这是一个非常小的问题。