Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

501
Vistas
ruby: ¿mapa a través de hash que devuelve cero?
{"key_a" => "value_a", "key_b" => "value_b", "key_c" => { "key_c_a" => nil, "key_c_b" => nil, "key_c_c" => "value_c_c"}, "key_d" => nil, "key_e" => nil }

¿Cómo mapeo el hash de modo que obtenga el resultado como "key_c_a", "key_c_b", "key_d" y key_e"?

sigo recibiendo mi respuesta como una matriz vacía y aquí está el método en el módulo que se usa en la clase principal

 def self.get_null_keys(container) container.map do |key, value| if value.is_a?(Array) value.map { |field| render_null_fields(field) } elsif value.is_a?(Hash) render_null_fields(value) elsif value.nil? key end end end
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Hazlo recursivamente:

 h={"key_a" => "value_a", "key_b" => "value_b", "key_c" => { "key_c_a" => nil, "key_c_b" => nil, "key_c_c" => "value_c_c"}, "key_d" => nil, "key_e" => nil } def find_nils(x, memo=[]) x.inject({}){ |m, (k, v)| v = find_nils(v, memo) if v.is_a? Hash # arbitrarily recursive memo << k if v.nil? } memo end

En lugar de inject como un esqueleto, también puede usar each :

 def find_nils(x, memo=[]) x.each{ |k, v| v = find_nils(v, memo) if v.is_a? Hash # arbitrarily recursive memo << k if v.nil? } memo end

O:

 p find_nils(h) ["key_c_a", "key_c_b", "key_d", "key_e"]
over 4 years ago · Santiago Trujillo Denunciar

0

Manera recursiva ingenua de hacerlo:

 hash = {"key_a" => "value_a", "key_b" => "value_b", "key_c" => { "key_c_a" => nil, "key_c_b" => nil, "key_c_c" => "value_c_c"}, "key_d" => nil, "key_e" => nil } def get_null_values(hash, array = []) hash.each do |key, value| array << key if value.nil? get_null_values(value, array) if value.is_a?(Hash) end array end get_null_values(hash) # ["key_c_a", "key_c_b", "key_d", "key_e"]
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda