You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ruby中利用索引将数组转换为键从1开始的哈希表?

Ruby实现数组转1起始索引的哈希

先指出你代码里的问题:

  • 变量名不匹配:定义的数组是color,但循环里误用了未定义的var
  • each_with_object的块参数写法错误,该方法需要同时接收数组元素和目标哈希对象,且你没有在块内完成键值对的赋值操作

下面是几种可行的实现方式:

方法1:结合each_with_object与索引计算

colors = ["Cyan", "Magenta", "Yellow", "Black"]
color_hash = colors.each_with_object({}) do |color, hash|
  hash[colors.index(color) + 1] = color
end
# 输出结果: {1=>"Cyan", 2=>"Magenta", 3=>"Yellow", 4=>"Black"}

方法2:用each_with_index直接构建哈希

colors = ["Cyan", "Magenta", "Yellow", "Black"]
color_hash = {}
colors.each_with_index do |color, idx|
  color_hash[idx + 1] = color
end

方法3:一行式实现(map+to_h)

colors = ["Cyan", "Magenta", "Yellow", "Black"]
color_hash = colors.each_with_index.map { |color, idx| [idx + 1, color] }.to_h

核心逻辑是:利用each_with_index获取数组元素和从0开始的索引,将索引值加1作为哈希的键,数组元素作为对应的值,最终生成目标哈希结构。

内容的提问来源于stack exchange,提问作者Admiral Zukov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 21:52:50