比较Ruby中的两个数组

Ste*_*ane 3 ruby

我想知道两个Ruby数组是否具有相同的元素,但不一定是相同的顺序.是否有本地方式来做到这一点?Array的相等运算符似乎检查项目是否相同且顺序是否相同,我需要放松后一种情况.

这将非常容易编写,我只是想知道是否有一个本地成语.

Ste*_*fan 8

如果您没有重复项,则可以使用Set而不是Array:

Set实现了无序值的集合,没有重复.这是Array直观的互操作设施和Hash快速查找的混合体.

例:

require 'set'
s1 = Set.new [1, 2, 3]   # -> #<Set: {1, 2, 3}>
s2 = [3, 2, 1].to_set    # -> #<Set: {3, 2, 1}>
s1 == s2                 # -> true
Run Code Online (Sandbox Code Playgroud)


Aru*_*hit 6

[2,1].uniq.sort == [1,2].uniq.sort #=> true
[2,1,4].uniq.sort == [1,2].uniq.sort #=> false
Run Code Online (Sandbox Code Playgroud)

或者

a1 = [1,2,3]
a2 = [2,3,1]
p (a2-a1).empty? && (a1-a2).empty? #=> true

a1 = [1,2,3]
a2 = [4,3,1]
p (a2-a1).empty? && (a1-a2).empty? #=> false

a1 = [1,2,3]
a2 = [2,3,1,5]
p (a2-a1).empty? && (a1-a2).empty? #=> false
Run Code Online (Sandbox Code Playgroud)