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
的集合相比,它感觉更接近集合的数学概念。但这在这里是一个很小的问题。
当比较数组时,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
的集合相比,它感觉更接近集合的数学概念。但这在这里是一个很小的问题。