我有一個對象數組,類型爲Lab,existing_labs
,以及一個不同的Labs數組,new_labs
。我已經爲Lab定義了我自己的==
比較器。我將如何返回array1中不在array2中的元素?
existing_labs
是db中已經存在的實驗室。 new_labs
是實驗室根據它們在db中的存在而被保存的。
現在我做這個
new_labs.each do |l|
lab = Lab.new(l)
exists = existing_labs.map{ |existing_lab| lab == existing_lab }
lab.save unless exists.include? true
end
這工作,但可能會很慢,如果陣列中的一個或兩個大。我相信必須有更好的方式來做到這一點!
編輯爲清楚:
我的問題是:是否有返回所有存在於new_labs
不存在於existing_labs
的實驗室,用我的==
方法的好辦法?
這裏你有答案。 http://stackoverflow.com/questions/4592918/performing-an-outer-join-on-two-ruby-arrays – JAiro
關閉,但我需要在兩個數組中的元素之間使用'=='方法進行比較我寫了(它在實驗室模型中)。 – igreulich