迭代对象数组并连接它们的数组本身的属性

时间:2014-04-16 05:38:40

标签: ruby-on-rails ruby arrays concatenation

我有一个对象数组,它们有一个数组作为属性。我想连接这些属性。我这样做:

result = []
objects.each { |obj| result.concat(obj.attr) }

虽然有效,但看起来很糟糕。我试过了

objects.reduce(:attr)

哪个不起作用。它是一个Rails应用程序,我想将相关项连接到一个数组中。我想要这个:

[{
  attr: [1,2]
},{
  attr: [3,4]
}]

变成这个:

[1,2,3,4]

1 个答案:

答案 0 :(得分:2)

您需要使用Array#map: -

result = objects.map { |obj| obj.attr }

如果您想要展平result数组: -

result = objects.flat_map { |obj| obj.attr }