ruby - 如何在数组 ruby 中添加元素?
问题描述
我想在数组的元素中添加'n-'作为元素索引的数量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!
但可以找不到将数字索引放入前置函数或使用每种方法的方法
解决方案
为了将索引注入到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"]
有关更多信息,请参阅此问题。
对于更“异国情调”的解决方案(尽管可读性较差),您可以将索引与数组的每个元素结合起来,然后加入结果:
(1..race_array.length).zip(race_array).map{|x| x.join('-')}.reverse
推荐阅读
- git - 将存储库从一个隔离网络移动到另一个网络
- android - 如何在调用函数之前等待 Room 数据库更新?
- perl - 在 Tree::DAGNode 模块中使用 Walkdown 方法的问题
- c++ - 如何检查调用了哪种类型的下标运算符,左值还是右值?
- javascript - 发送图像时的PHP cors问题
- python - 当两个值都是字符串时,为什么我的 df.replace 不起作用?无法比较类型 'ndarray(dtype=object)' 和 'str'
- angular-cli - 如何从外部原理图中调用 ng add
- python - 将绘图值保存到 .dat 文件
- php - php中的数据库查询失败
- ruby - Kotlin's With,用于红宝石