2012-06-01 2 views
0

Мне было интересно, можно ли это улучшить.Лучший способ удалить элементы из двух массивов с помощью delete_if

У меня есть два массива: ссылки и archived_releases. links содержит строки, которые могут отображаться в: ключевом знаке archived_releases.

Это не сработало:

links.delete_if { |link| 
    archived_releases.count > archived_releases.delete_if{ |release| release[:url] == link }.count 
} 

Так что я пришел с этим:

links.delete_if { |link| 
    archived_releases.count > archived_releases.delete_if{ |release| release[:url] == link }.count 
} 

ответ

1

Я бы первым вытаскивать archived_releases записи, которые вы хотите быстро сравнить, а затем вы можете просто использовать быстрый include? чек. Что-то вроде:

urls = archived_releases.collect { |ar| ar[:url] } 
links.delete_if { |link| urls.include?(link) } 
Смежные вопросы