Convertir un Hash a Array

Hola, con esto ya tengo bastante por hoy (y mañana XD):

Tengo este Hash:
hash = {“A”=>111,“B”=>222,“C”=>“lalala”}

Y quiero convertirlo en esto:
texto = “A=111;B=222;C=lalala”

Se me ocurre primero hacer un Hash.to_a:
hash.to_a
=> [[“A”, 111], [“B”, 222], [“C”, “lalala”]]

Pero luego no sé seguir, ¿alguna sugerencia?

Mil gracias.

El Miércoles, 12 de Marzo de 2008, Iñaki Baz C. escribió:

=> [[“A”, 111], [“B”, 222], [“C”, “lalala”]]

Pero luego no sé seguir, ¿alguna sugerencia?

Para complicarlo un poco más puede ocurrir que algunas “keys” del Hash
no
tenga valor:

hash = {“A”=>111,“B”=>222,“C”=>“lalala”,“D”=>nil}

El Miércoles, 12 de Marzo de 2008, Iñaki Baz C. escribió:

=> [[“A”, 111], [“B”, 222], [“C”, “lalala”]]

Pero luego no sé seguir, ¿alguna sugerencia?

Mil gracias.

Bueno, no es muy muy elegante pero algo es algo:

hash = {“A”=>111,“B”=>222,“C”=>“lalala”}

text_value = “”
hash.each_pair { |key,value| text_value << “;” + key.to_s + “=” +
value.to_s }
return text_value

Ya es suficiente así, ¿no?

Hola,

Tengo este Hash:
hash = {“A”=>111,“B”=>222,“C”=>“lalala”}

Y quiero convertirlo en esto:
texto = “A=111;B=222;C=lalala”

supongo que hay más soluciones, pero ésta te valdría

hash.map{|k,v| “#{k}=#{v}”}.join(’;’)

Para complicarlo un poco más puede ocurrir que algunas “keys” del Hash no
tenga valor:

con lo de arriba te debería soportar ese caso también

saludos,

javier ramírez

El Miércoles, 12 de Marzo de 2008, javier ramirez escribió:

hash.map{|k,v| “#{k}=#{v}”}.join(’;’)

Perfecto, gracias :wink:

On Mar 12, 2008, at 24:56 , Iñaki Baz C. wrote:

=> [[“A”, 111], [“B”, 222], [“C”, “lalala”]]

Pero luego no sé seguir, ¿alguna sugerencia?

Como Hash mixinea (con perdon) Enumerable y Hash#each itera por los
pares puedes tirar de map directamente de esta manera:

hash.map {|k,v| "#{k}=#{v}"}.join(';')

– fxn