/ / Convertendo array para hash (Ruby) [closed] - arrays, ruby, hash

Conversão de array para hash (Ruby) [closed] - arrays, ruby, hash

Abaixo está a questão na minha aula.

Dada a variável some_array = [[:a, 123], [:b, 456]],
converta some_array neste hash: {a: 123, b: 456}

Respostas:

2 para resposta № 1

Eu sou um iniciante também, então isso pode ser um poucoineficiente, mas é assim que eu explicaria (existem métodos mais simples que eu tenho certeza, mas desde que você mencionou isso é para uma aula, eu pensei em explicar em formato longo):

hash={}

some_array.each do |item|
hash[item[0]] = item[1]
end

Só para explicar isso, começo criando um hash vazio que vou usar depois.

Então eu percorro some_array usando o each método. Isso atribui cada elemento em some_array à variável item. Dado que some_array é uma matriz aninhada (que basicamente significa que é uma matriz de matrizes), a variável de item terá o valor das matrizes internas - por exemplo, item = [:a, 123].

Então podemos acessar cada elemento dentro item ao criar o hash. Seguindo o mesmo exemplo que dei anteriormente item[0] == :a e item[1] == 123.

Então eu uso uma forma abreviada ao criar hashes - ou seja, hash[key] = value. Neste caso, quero que a chave seja: a (que é item [0]) e o valor seja 123 (que é item [1]). Então eu posso usar hash[item[0]] = item[1].

Espero que tenha ajudado!


1 para resposta № 2

Para converter em hash, simplesmente use o método .to_h

some_array.to_h