2013-07-05 113 views
2

我有一個「Q & A」數組,每個元素是三個元素(Q,A和Animal)的子陣列。 我如何選擇所有獨特的動物?ruby​​ - 數組數組 - 如何選擇獨特的元素?

我可以選擇單獨的動物:

[@q_and_a[0][2]] + [@q_and_a[1][2]] + [@q_and_a[2][2]] +[@q_and_a[3][2]] 
# => ["Elephant", "Elephant", "Spider", "Spider"] 
+3

請提供示例輸入和輸出。 –

+0

如果你正在使用rails(activerecord),你有'#pluck'方法:'animals = QnAModel.pluck(:animal).uniq'。我知道這不是你正在尋找的,但許多人可能是。另請參閱:http://stackoverflow.com/a/9872725/741850 – Automatico

回答

-1

,如果你的變量稱爲myElems那麼你可以使用下列內容:

myElems = [@q_and_a[0][2]] + [@q_and_a[1][2]] + [@q_and_a[2][2]] +[@q_and_a[3][2]] 
myElems.uniq 
# => ["Elephant","Spider"] 

這裏是一個link與它的信息

-2
@q_and_a.map{|a| a[2]}.group_by{|e| e}.select{|_, v| v.length == 1}.keys 
+2

以及爲什麼不使用uniq? – jondavidjohn

+0

,因爲這會給出錯誤的結果。 – sawa

+2

我想這取決於你如何閱讀這個問題,我認爲這兩者都是有效的可能性。鑑於OP的例子輸出(沒有「獨特的」動物),我傾向於我的解釋。 – jondavidjohn