我对Ruby上的数组数组有两个问题:
首先,我不知道如何比较这个数组数组
a = [[1,2,3] , [4,5,6]]
=> a = [1,2,3,4,5,6]
(输出:11< 12)
第二,我想将它们合并为一个长数组
{{1}}
谢谢。
答案 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文档,因为inject
和flatten
等详细解释过。
答案 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(:+)