使用递增键名称将数组值映射到散列

时间:2016-03-28 23:16:34

标签: arrays ruby hashmap

我有一个十六进制颜色代码的字符串数组,如下所示:

["#121427", "#291833", "#4B2E4D", "#5D072F", "#BB2344", "#ED9F90"]

我希望将它们转换为具有不同键名的哈希值,其中有一个不同的名称" color"然后是一个整数值,当它横过数组时会递增,如下所示:

{"color1" => "#121427", "color2" => "#291833", "color3" => "#4B2E4D", "color4" => "#5D072F", "color5" => "#BB2344", "color6" => "#ED9F90"}

整数值可以是基于0或基于1,但它并不重要。

我尝试使用map方法和to_h方法,但我无法弄清楚如何创建增量密钥名称。

3 个答案:

答案 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}

它使用:

答案 2 :(得分:0)

如果vector<vector<x>>是您的数组,则可以执行此操作:

vector