将子阵列合并为单个子阵列,如果在轨道上使用ruby具有相同的id,则删除重复项

时间:2016-12-07 13:57:23

标签: ruby-on-rails ruby

我有一个像这样的数组:

array = [[1, 'Something', '123456321'], [2, 'Something', '123456321'], [2, 'Something', '1234563212']]

我想合并具有相同id的子数组并获得此结果:

array = [[1, 'Something', '123456321'], [2, 'Something, Something', '123456321, 1234563212']]

任何人都可以帮助我吗?谢谢!

2 个答案:

答案 0 :(得分:1)

array.group_by(&:first).map do |id, records|
  names  = records.map(&:second).join(', ')
  values = records.map(&:last).join(', ')

  [id, names, values]
end

正如您最近提出的相反问题,我建议您阅读EnumerableArrayHashString文件。它将使您在表达性方面立即得到提升,并了解如何使用Ruby执行常见任务。

答案 1 :(得分:0)

只是为了好玩,这里有一个单行:

array.group_by(&:first).map{|i, arrays| [i] + arrays.transpose.drop(1).map{|v| v.join(', ') } }