在一行中将数组项添加到数组中
Posted
技术标签:
【中文标题】在一行中将数组项添加到数组中【英文标题】:Add array items to array in one line 【发布时间】:2013-09-22 22:25:14 【问题描述】:我正在构建一个 CSV 对象,并且我有一组动态的标题项。我按如下方式构建此“标题”行:
headers = ["name", "email"]
questions.each do |q|
headers << q
end
csv << headers
虽然这很好用,但我想做的是将调用放在一行中,而不必先添加 headers
变量。
比如:
csv << ["name", "email", questions.each |q| q ]
显然上述方法不起作用,因为each
返回“问题”数组。
有什么建议吗?
【问题讨论】:
【参考方案1】:csv << headers + questions
【讨论】:
【参考方案2】:如下使用 splat 运算符。
csv << ["name", "email", *questions]
【讨论】:
【参考方案3】:只需使用Array#+
:
csv << ["name", "email"] + questions
或者更短一点:
csv << %w(name email) + questions
【讨论】:
【参考方案4】:有几种方法可以做到这一点。我会使用这样的东西:
headers = (['name', 'email'] << questions).flatten
有关性能的更详细的答案,请参阅此问题:How do you add an array to another array in Ruby and not end up with a multi-dimensional result?
【讨论】:
【参考方案5】:["name", "email", *questions.map |q| q ]
map
返回结果数组
【讨论】:
objects.map |q| q
和objects
不一样?
仅在这种情况下,但是如果你想对每个元素做一些事情并返回一个结果对象你需要使用map
以上是关于在一行中将数组项添加到数组中的主要内容,如果未能解决你的问题,请参考以下文章