[英]How do I get only unique results from two dissimilar arrays?
這似乎是一個重復的問題,但是我找不到關於此的任何信息。 我想通過將遠程獲取的json數組與本地表進行比較來顯示排除某些結果的結果。 我有一個畫廊模型:
t.integer :smugmug_id
t.string :smugmug_key
t.integer :category_id
t.string :category_name
t.string :description
t.integer :highlight_id
t.string :highlight_key
t.string :highlight_type
t.string :keywords
t.string :nicename
t.integer :subcategory_id
t.string :subcategory_name
t.string :title
t.string :url
該模型的數據由連接到smugmug api(json)並在本地存儲數據的rake任務填充。 我正在嘗試創建一個視圖,以顯示所有未存儲在本地的自鳴得意的畫廊。
到目前為止,這是我嘗試過的方法,但並沒有像我想的那樣排除本地存儲的畫廊。
def self.not_stored
smugmug_list = Smug::Client.new.albums(heavy = true)
gallery_list = Gallery.select(:smugmug_id)
smugmug_list.each do |smugmug|
smugmug unless gallery_list.include? smugmug.id
end
end
希望這是有道理的。 我正在獲取一個json畫廊數組,我想顯示該數組,但不包括專輯ID與我本地存儲的任何記錄的smugmug_id相匹配的結果。
快速編輯:我正在使用此gem的改編版來連接smugmug api。
只需使用差分運算符即可 。
一般示例:
ruby-1.9.2-p136 :001 > [3,2,1] - [2,1]
=> [3]
因此,您將擁有:
smugmug_list.collect{|e| e.id} - gallery_list
Enumerable#collect會將smugmug_list轉換為ID列表。 從那里,您可以執行差分運算符,該運算符將返回所有未本地存儲的smugmug畫廊的所有id。
維護畫廊列表的另一種選擇:
smugmug_list.select{|e|!gallery_list.include?(e.id)}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.