/ / Rails - array multidimensional com rótulos para array de hash - ruby-on-rails, ruby

Rails - array multidimensional com rótulos para array de hash - ruby-on-rails, ruby

Eu tenho uma matriz multidimensional onde a primeira linha contém os rótulos de valor:

[
["a","b","c"],
[1,2,3],
[4,5,6]
]

Gostaria de converter essa matriz em uma matriz de hashes em que os rótulos são os índices em cada elemento:

[
{"a" => 1, "b" => 2, "c" => 3},
{"a" => 4, "b" => 5, "c" => 6}
]

Qual é a maneira mais rápida de fazer isso no Ruby / Rails?

Respostas:

3 para resposta № 1

Aqui está uma maneira de converter sua matriz multidimensional em uma matriz de hashes, onde o primeiro elemento na matriz fornecida atua como o conjunto de chaves usadas nos hashes retornados:

arr = [
["a", "b", "c"],
[1, 2, 3],
[4, 5, 6]
]

labels = arr.shift

arr.map { |sub_arr| Hash[labels.zip(sub_arr)] }

# => [{"a" => 1, "b" => 2, "c" => 3}, {"a" => 4, "b" => 5, "c" => 6}]

Espero que ajude!