从Ruby中的另一个数组创建新数组的最佳实践

时间:2015-11-17 20:55:01

标签: ruby-on-rails arrays ruby

这是我的代码可行,但我正在寻找更清洁的解决方案。我试图避免首先将我的阵列初始化。

users = []
employees_to_import.each do |employee|
  users << User.new(employee.slice(:first_name, :last_name, :email))
end

ruby​​中是否有一种方法可以调用它来做这样的事情?

users = employees_to_import.push_each do |employee|
  User.new(employee.slice(:first_name, :last_name, :email))
end

不确定是否存在这样的方法,我在文档中没有看到任何内容,但我想我会问。

1 个答案:

答案 0 :(得分:3)

您可以使用map方法:

users = employees_to_import.map do |employee|
  User.new(employee.slice(:first_name, :last_name, :email))
end

它的别名为collect

从文档(here):

mapcollect基本上返回一个新数组,其中包含每个元素运行一次块的结果:

(1..4).map { |i| i*i }      #=> [1, 4, 9, 16]