簡體   English   中英

如何從兩個不同的數組中獲得唯一的結果?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM