Ruby如何比较2D数组值

时间:2015-06-07 13:51:29

标签: arrays ruby multidimensional-array

我对Ruby上的数组数组有两个问题:

首先,我不知道如何比较这个数组数组

   a = [[1,2,3] , [4,5,6]] 
=> a = [1,2,3,4,5,6]

输出:11< 12)

第二,我想将它们合并为一个长数组

{{1}}

谢谢。

3 个答案:

答案 0 :(得分:1)

要从数组中获取具有最大总和的项目,您可以使用以下行:

a.max_by {|arr| arr.inject(0, &:+)}

要从父数组中的所有数组中获取所有uniq值,请使用以下行:

[[1,2,3] , [4,5,6]].flatten.uniq

答案 1 :(得分:0)

您的第一个问题:您是否正在尝试比较两个阵列的内容总和?如果是这样,您可以执行以下操作:

a = [[1,2,3,5],[1,2,3,6]]
a[0].inject(:+) < a[1].reduce(:+)
# returns true

您的第二个问题:a.flatten会将所有元素合并为一个数组。

我建议您阅读Ruby文档,因为injectflatten等详细解释过。

答案 2 :(得分:0)

首先,我不知道如何比较这个数组数组a = [[1,2,3,5],[1,2,3,6]](试着得到答案11&lt; 12) 你可以用

来做
a = [[1,2,3,5] , [1,2,3,6]]
a[0].inject{|sum,x| sum + x } < a[1].inject{|sum,x| sum + x }

或者

a = [[1,2,3,5] , [1,2,3,6]]
a[0].reduce(:+) < a[1].reduce(:+)

您也可以使用a[0].inject(:+) < a[1].inject(:+)。减少强调Map reduce verbage.

第二,我想将它们合并成一个长数组a = [[1,2,3],[4,5,6]] =&gt; a = [1,2,3,4,5,6]

a = [[1,2,3,5] , [1,2,3,6]]
concatenated = a.flatten

a = [[1,2,3,5] , [1,2,3,6]]
concatenated = a.reduce(:concat)

concatenated = a.reduce(:+)