如何在数组 ruby​​ 中添加元素?

Posted

技术标签:

【中文标题】如何在数组 ruby​​ 中添加元素?【英文标题】:How to prepend elements in array ruby? 【发布时间】:2020-11-05 12:08:33 【问题描述】:

我想在数组的元素中添加“n-”作为元素索引的编号,然后将其反转 数组是 ["Abricot du Laudot", "Black Caviar", "Brigadier Gerard", "Coup de Folie"] 我需要它是那样的 ["4-Brigadier Gerard!", "3-Coup de Folie!", "2-Black Caviar!", "1-Abricot du Laudot!"] 到目前为止我已经尝试过 race_array.map! |horse| horse.prepend() .reverse! 但找不到将数字索引放入前置函数或使用每种方法的方法

【问题讨论】:

【参考方案1】:

为了将索引注入map 块,您需要调用将索引发送到块的枚举器方法。这里有几个选项:

race_array = ["Abricot du Laudot", "Black Caviar", "Brigadier Gerard", "Coup de Folie"]

# Use `each_with_index` before calling `map`
race_array.each_with_index.map |name, i| "#i+1-#name" .reverse
# => ["4-Coup de Folie", "3-Brigadier Gerard", "2-Black Caviar", "1-Abricot du Laudot"]

# Use `with_index` after calling `map`
race_array.map.with_index |name, i| "#i+1-#name" .reverse
# => ["4-Coup de Folie", "3-Brigadier Gerard", "2-Black Caviar", "1-Abricot du Laudot"]

# Similarly, you can call `with_index` with an offset:
race_array.map.with_index(1) |name, i| "#i-#name" .reverse
# => ["4-Coup de Folie", "3-Brigadier Gerard", "2-Black Caviar", "1-Abricot du Laudot"]

更多信息请参见this question。

对于更“异国情调”的解决方案(尽管可读性较差),您可以将索引与数组的每个元素结合起来,然后加入结果:

(1..race_array.length).zip(race_array).map|x| x.join('-').reverse

【讨论】:

而不是"#i-#name",也许写name.prepend.(i+'-')之类的东西更清楚。这当然是口味问题。此外,还有一个功能差异:如果 name 不是 String,而是,例如,nil 或数字,这将在您的代码中被静默接受,而 prepend 的解决方案将引发一个例外。哪一个是这里想要的行为,我不知道。 对不起,当然应该是name.prepend.("#i-")

以上是关于如何在数组 ruby​​ 中添加元素?的主要内容,如果未能解决你的问题,请参考以下文章

js如何往数组Array中添加元素?

js如何往数组Array中添加元素

js中如何操作数组?添加多个元素

jquery 向空数组中添加元素,重复的就不添加到空数组中请问该如何编写

如何给数组添加元素

如何锁定记录数组以在线程中添加和删除元素