我有两个数组:
a = [1,2,3]
b = [1,4,3]
Ruby中是否存在元素比较方法,以便我可以执行以下操作:
a == b
返回:
[1,0,1]
或类似[TRUE,FALSE,TRUE]
。
答案 0 :(得分:19)
这是我能想到的一种方式。
a = [1, 2, 3]
b = [1, 4, 3]
a.zip(b).map { |x, y| x == y } # [true, false, true]
答案 1 :(得分:4)
您也可以使用.collect
a.zip(b).collect {|x,y| x==y }
=> [true, false, true]
答案 2 :(得分:3)
a = [1,2,3]
b = [1,4,3]
a.zip(b).map { |pair| pair[0] <=> pair[1] }
=> [0, -1, 0]
元素比较是使用zip
Ruby Array对象方法实现的。
a = [1,2,3]
b = [1,4,3]
a.zip(b)
=> [[1, 1], [2, 4], [3, 3]]
答案 3 :(得分:2)
你可以做这样的事情来得到你想要的东西:
[1,2,3].zip([1,4,3]).map { |a,b| a == b }
=> [true, false, true]
答案 4 :(得分:2)
这应该可以解决问题:
array1.zip(array2).map { |a, b| a == b }
zip创建一个对数组,由该位置的两个数组中的每个元素组成。想象一下,将两个阵列并排粘在一起。
答案 5 :(得分:-2)
尝试这样的事情:
@array1 = ['a', 'b', 'c', 'd', 'e']
@array2 = ['d', 'e', 'f', 'g', 'h']
@intersection = @array1 & @array2
@intersection现在应该是['d','e']。
Intersection - 返回一个新数组,其中包含两个数组共有的元素,没有重复项。
您甚至可以尝试以下一些红宝石技巧:
array1 = ["x", "y", "z"]
array2 = ["w", "x", "y"]
array1 | array2 # Combine Arrays & Remove Duplicates(Union)
=> ["x", "y", "z", "w"]
array1 & array2 # Get Common Elements between Two Arrays(Intersection)
=> ["x", "y"]
array1 - array2 # Remove Any Elements from Array 1 that are
# contained in Array 2 (Difference)
=> ["z"]