我已經看到了許多有關此問題的問題,但僅使用一個鍵,從不使用多個鍵。Ruby刪除哈希數組中的重複條目,但基於多個值
我有散列以下陣列:由於持續時間不同,也可能根本不存在
a = [{:name=>"Yes, Yes, Yes", :artist=>"Some Dude", :composer=> 'First Dude', :duration=>"3:21"},
{:name=>"Chick on the Side", :artist=>"Another Dude", :duration=>"3:20"},
{:name=>"Luv Is", :duration=>"3:13"},
{:name=>"Yes, Yes, Yes", :artist=>"Some Dude", :composer=> 'First Dude', :duration=>"2"},
{:name=>"Chick on the Side", :artist=>"Another Dude"}]
a.uniq
不會在這裏工作。我在數據庫中設置了一個獨一無二的密鑰,該密鑰不允許由同名,藝術家和作曲家重複錄入,所以我有時會在人們對這三個密鑰有重複條目時發生錯誤。
有沒有辦法運行uniq
來檢查這3個鍵?我試圖像這樣的塊:
new_tracks.uniq do |a_track|
a_track[:name]
a_track[:artist]
a_track[:composer]
end
但是,忽略任何其中鍵是不存在(沒有作曲家不符合例如上述標準的任何條目)。
我總是可以使用:name
這個鍵,但這意味着我將編輯中具有相同標題但不同藝術家或作曲家的潛在有效曲目刪除。
這是與Ruby 2.0。
太好了,**非常感謝!**第一個工作正常:'.uniq {| track | [track [:name],track [:artist],track [:composer]]。join(「:」)}'。第二個給我一個錯誤'SyntaxError:unexpected'}',期待']''。如果我解決了這個問題,那麼我會得到'未定義的方法'屬性''。但第一個人就是這樣做的。再次感謝。 – kakubei
我修正了語法錯誤。 –
我仍然得到'未定義的方法'屬性''該行...... – kakubei