Ответ 1
Вы можете использовать метод set intersection &
для этого:
x = [1, 2, 4]
y = [5, 2, 4]
x & y # => [2, 4]
Если я хочу сравнить два массива и создать интерполированную выходную строку, если переменная массива из массива y
существует в x
, как я могу получить вывод для каждого соответствующего элемента?
Это то, что я пытался, но не совсем получаю результат.
x = [1, 2, 4]
y = [5, 2, 4]
x.each do |num|
puts " The number #{num} is in the array" if x.include?(y.each)
end #=> [1, 2, 4]
Вы можете использовать метод set intersection &
для этого:
x = [1, 2, 4]
y = [5, 2, 4]
x & y # => [2, 4]
x = [1, 2, 4]
y = [5, 2, 4]
intersection = (x & y)
num = intersection.length
puts "There are #{num} numbers common in both arrays. Numbers are #{intersection}"
Будет выводиться:
There are 2 numbers common in both arrays. Numbers are [2, 4]
ОК, поэтому оператор &
оказывается единственным, что вам нужно сделать, чтобы получить этот ответ.
Но прежде, чем я узнал, что я написал быстрый патч обезьяны для класса массива, чтобы сделать это:
class Array
def self.shared(a1, a2)
utf = a1 - a2 #utf stands for 'unique to first', i.e. unique to a1 set (not in a2)
a1 - utf
end
end
Однако оператор &
является правильным ответом. Более элегантный.