在一行中将数​​组项添加到数组中

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

以上是关于在一行中将数​​组项添加到数组中的主要内容,如果未能解决你的问题,请参考以下文章

如何在 VueJs 中将数组存储到 Vuex

经过一段时间的延迟后,如何在数组中显示一组项?

在VBScript中将项目添加到数组

在javascript中将数组作为元素添加到数组中

如何在javascript中将一个数组中的值添加到另一个数组

在 Swift 中将元素添加到数组中