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

dev*_*ell 2 javascript ramda.js

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

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

现在我是这样做的:

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

export const equalIgnoreOrder = (arr1, arr2) =>
  equalLength(arr1, arr2) && equalLength(arr1, R.union(arr1, arr2))
Run Code Online (Sandbox Code Playgroud)

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

Sco*_*yet 5

我觉得你的回答没问题。一个稍短的将是

const equalIgnoreOrder = compose(isEmpty, symmetricDifference)
Run Code Online (Sandbox Code Playgroud)

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