2013-07-05 45 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