Как я могу сравнить 2 разных массива и удалить дублированные записи, которые уже существуют во втором массиве из первого массива - PullRequest
1 голос
/ 03 октября 2019

У меня есть два разных массива, и я пытаюсь избежать дубликатов.

Я пробовал проходить через arr1, а не проходить через arr2, и при совпадении следует удалить значение из arr1

def gmail_interviews 
  arr1 = []
  arr2 = []

  arr1 = [{"from"=>"chinedu abalogu <chineduabalogu@yahoo.com>",
    "to"=>"chinedu abalogu <chineduabalogu@gmail.com>",
    "date"=>"chinedu abalogu <chineduabalogu@gmail.com>",
    "subject"=>[{"name"=>"From", "value"=>"chinedu abalogu <chineduabalogu@yahoo.com>"}],
    "snippet"=>"interview booked"},
   {"from"=>"chinedu abalogu <chineduabalogu@yahoo.com>",
    "to"=>"chinedu abalogu <chineduabalogu@gmail.com>",
    "date"=>"chinedu abalogu <chineduabalogu@gmail.com>",
    "subject"=>[{"name"=>"From", "value"=>"chinedu abalogu <chineduabalogu@yahoo.com>"}],
    "snippet"=>"Interview booked for tomorrow"}]

  arr2 = [{"from"=>"chinedu abalogu <chineduabalogu@yahoo.com>",
    "to"=>"chinedu abalogu <chineduabalogu@gmail.com>",
    "date"=>"chinedu abalogu <chineduabalogu@gmail.com>",
    "subject"=>[{"name"=>"From", "value"=>"chinedu abalogu <chineduabalogu@yahoo.com>"}],
    "snippet"=>"interview booked"},
   {"from"=>"chinedu abalogu <chineduabalogu@yahoo.com>",
    "to"=>"chinedu abalogu <chineduabalogu@gmail.com>",
    "date"=>"chinedu abalogu <chineduabalogu@gmail.com>",
    "subject"=>[{"name"=>"From", "value"=>"chinedu abalogu <chineduabalogu@yahoo.com>"}],
    "snippet"=>"Interview booked for tomorrow"}]

  arr1.each_with_index do |id, index|
    if !arr2.empty?
      arr2.each_with_index do |i, ind|
        if i == id
          puts "Cant save duplicated message to db\n #{id}"
          arr1.delete_at(index)
        end   
      end 
    end
  end

  render json: arr.as_json

end 

из моего кода, он проходит через arr1 один и два раза для arr2 и останавливается вместо того, чтобы дважды зацикливаться в обоих массивах, так как они оба содержат 2 значения count

В основном он находит дубликат для arr1 [0] и удаляетпосле этого он не перебирает arr1 [1]

возвращаемое значение должно быть нулевым или пустым, так как оба массива имеют одинаковые значения .. пожалуйста, что я пропускаю?

1 Ответ

1 голос
/ 03 октября 2019

Как насчет

arr1 - arr2

?

Например:

arr1 = [1,2,3,4]
# => [1, 2, 3, 4]
arr2 = [2,3,10]
# => [2, 3, 10]
arr1 - arr2
# => [1, 4]

Документы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...