如果我有一个集合,我如何遍历每个对象并返回一个数组,每个元素是每个对象的一个​​属性?

mar*_*ion 0 ruby ruby-on-rails ruby-on-rails-4

假设我有一个集合fruits,每个fruit对象都有一个名为的属性color.我想循环遍历我的整个fruits集合,让它以1个单独的数组返回color,每个父节点在数组中是1个元素.

理想情况下,输出看起来像这样:['red', 'blue', 'green', 'yellow'].它不必是字符串,它可以是整数或任何数组中的元素.重要的是每个对象的每个属性都包含在数组的1个单元格中,而我只得到1个数组.

我试过这样的事情:

fruits.map { |fruit| return [fruit.color] }
Run Code Online (Sandbox Code Playgroud)

但是这会返回多个数组 - 这不是我想要的.

想法?

Mar*_*pka 6

这样做:

fruits.map(&:color)
Run Code Online (Sandbox Code Playgroud)

它相当于:

fruits.map { |fruit| fruit.color }
Run Code Online (Sandbox Code Playgroud)

并返回从块返回的数组中每个元素的值fruits数组.

您的解决方案不起作用,因为您返回的数组包含一个元素(颜色)而不是颜色,所以最后您得到了一个数组数组:

[['green'], ['blue']] # etc.
Run Code Online (Sandbox Code Playgroud)