我有一个十六进制颜色代码的字符串数组,如下所示:
["#121427", "#291833", "#4B2E4D", "#5D072F", "#BB2344", "#ED9F90"]
我希望将它们转换为具有不同键名的哈希值,其中有一个不同的名称" color"然后是一个整数值,当它横过数组时会递增,如下所示:
{"color1" => "#121427", "color2" => "#291833", "color3" => "#4B2E4D", "color4" => "#5D072F", "color5" => "#BB2344", "color6" => "#ED9F90"}
整数值可以是基于0或基于1,但它并不重要。
我尝试使用map
方法和to_h
方法,但我无法弄清楚如何创建增量密钥名称。
答案 0 :(得分:1)
使用默认为零索引的each_with_index
方法执行此操作并不困难:
Hash[colors.each_with_index.map { |c, i| [ 'color%d' % i, c ] }]
您与map
关系密切,您只需将其扩展为值/索引对。
答案 1 :(得分:0)
另一种可能的方式:
colors.each_with_object({}).with_index(1){|(e, h), i| h["color#{i}"] = e}
它使用:
Enumerable#each_with_object
跳过一个临时数组并直接修改生成的哈希Enumerator#with_index
还提供自动递增的整数(它甚至可以从1开始)答案 2 :(得分:0)
如果vector<vector<x>>
是您的数组,则可以执行此操作:
vector