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

时间:2015-01-30 07:14:41

标签: ruby-on-rails ruby ruby-on-rails-4

假设我有一个集合fruits,每个fruit对象都有一个名为color的属性。我想循环遍历整个fruits集合,并将其返回到一个单独的数组中,每个父项的color为数组中的1个元素。

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

我试过这样的事情:

fruits.map { |fruit| return [fruit.color] }

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

想法?

1 个答案:

答案 0 :(得分:6)

这样做:

fruits.map(&:color)

它相当于:

fruits.map { |fruit| fruit.color }

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

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

[['green'], ['blue']] # etc.