Сравните два массива Ruby 2.0 - PullRequest
0 голосов
/ 04 октября 2019

Я новичок в изучении ruby ​​и создал два массива. Я пытаюсь сравнить каждый элемент массива 1 с массивом 2 и распечатать те, которые не существуют в массиве 1, и то, что не существует в массиве 2.

  **#localarraydb**
    bdlocal = CTrunk.find_by_sql('select phone_number from phones_trunks;')


    connect = PG.connect(:hostaddr => @servers[0], :port => 5432, :dbname => "mydb", :user => "myuser", :connect_timeout => 90)
    getdata = connect.exec("select name,active,phone_number from phones_trunks;")
    array = []


    getdata.each do |re|
    array << re.values[2]
    puts array
end


**#Local Array DB retrive each item from db**
    bdlocal.each do |compare|
    puts "Server 11:#{array[2]}\n Server Local:#{compare.phone_number}"

 if compare == getdata then
        puts "equals"
    else
    puts "different #{here show diferrence"
    end
end

Ответы [ 2 ]

0 голосов
/ 04 октября 2019

Я не совсем понимаю ваше возражение против ответа Марка. Но, возможно, поможет использование метода 'filter'?

array_1 = [1, 2, 3, 4]
array_2 = [3, 4, 5, 6]

Чтобы вернуть элементы FOUND в обоих массивах:

array_1.filter {|item| array_2.include?(item)}
=> [3, 4]

Чтобы вернуть элементы NOT FOUND в обоих массивах:

array_1.filter {|item| !array_2.include?(item)}
=> [1, 2]

Я не уверен, если это необходимо, но в Ruby есть изящный маленький метод split, который, в общем, разбивает строку на элементы в массиве. Может ли помочь?

text = 'hello there i am a boring string of text'

Чтобы вернуть массив слов:

text.split(' ')
=> ["hello", "there", "i", "am", "a", "boring", "string", "of", "text"]

Удачи!

0 голосов
/ 04 октября 2019

Вам просто нужно вычесть их:

array_1 = [1, 2, 3, 4]
array_2 = [3, 4, 5, 6]

array_1 - array_2
=> [1, 2]

array_2 - array_1
=> [5, 6]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...