Ответ 1
Вот один из способов, о котором я могу думать.
a = [1, 2, 3]
b = [1, 4, 3]
a.zip(b).map { |x, y| x == y } # [true, false, true]
У меня есть два массива:
a = [1,2,3]
b = [1,4,3]
Есть ли в Ruby метод сравнения по элементам, так что я мог бы сделать что-то вроде этого:
a == b
возвращает:
[1,0,1]
или что-то вроде [TRUE,FALSE,TRUE]
.
Вот один из способов, о котором я могу думать.
a = [1, 2, 3]
b = [1, 4, 3]
a.zip(b).map { |x, y| x == y } # [true, false, true]
Вы также можете использовать .collect
a.zip(b).collect {|x,y| x==y }
=> [true, false, true]
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]]
Вы можете сделать что-то подобное, чтобы получить именно то, что вы хотите:
[1,2,3].zip([1,4,3]).map { |a,b| a == b }
=> [true, false, true]
Это должно сделать трюк:
array1.zip(array2).map { |a, b| a == b }
zip создает один массив пар, состоящий из каждого элемента из обоих массивов в этой позиции. Представьте себе склеивание двух массивов бок о бок.
Попробуйте что-то вроде этого:
@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"]