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