将枚举或数组映射到二维数组ruby

时间:2017-04-12 10:52:51

标签: ruby-on-rails arrays ruby enums

假设我有一个这样的枚举:

enum colors: [:black, :dark_gray, :light_gray, :white]

我希望输出为:

[["black",0], ["dark_gray",1], ["light_gray",2], ["white",3]]

[["Black",0], ["Dark gray",1], ["Light gray",2], ["White",3]] #using k.humanize on all keys

如何将此作为输出。此外,这也可以来自1-d阵列。例如

input=[1,2,3]
output=[[1,1],[2,4],[3,9]]

使用地图等等。

我尝试使用map函数,但我尝试的方式提供了无效的语法。所以我在这里问了。答案应该是微不足道的,但我错过了一些东西。

我试过了:

op = colors.keys.map{[|s| s, colors[s]]}

但这是错误的语法。

SyntaxError: unexpected ']', expecting '}'

1 个答案:

答案 0 :(得分:5)

此功能已存在,但您应将枚举更改为单数

enum color: [:black, :dark_gray, :light_gray, :white]

您的模型中有一个类方法现在称为colors

MyModel.colors

将返回哈希

您可以使用#to_a方法

将其转换为数组数组
MyModel.colors.to_a