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

316
Vistas
Reemplazo de elemento - Ruby

Estoy tratando de crear una nueva matriz donde los elementos de la matriz original se reemplazan con sus valores correspondientes en el hash. Quiero comparar cada elemento en arr con la clave en hash y, si son iguales, colocarlos en el arr y devolverlo al final. ¿Por qué mi código no funciona y cómo puedo acceder/devolver el valor clave de la entrada respectiva en hash, no solo el valor señalado por la clave? Si entiendes lo que estoy diciendo.

 def element_replace(arr, hash) count = [] for i in arr do if i == hash.key count << value else count << i end end return count end arr1 = ["LeBron James", "Lionel Messi", "Serena Williams"] hash1 = {"Serena Williams"=>"tennis", "LeBron James"=>"basketball"} print element_replace(arr1, hash1) # => ["basketball", "Lionel Messi", "tennis"] puts arr2 = ["dog", "cat", "mouse"] hash2 = {"dog"=>"bork", "cat"=>"meow", "duck"=>"quack"} print element_replace(arr2, hash2) # => ["bork", "meow", "mouse"] puts
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Ruby's Hash::fetch sería una técnica para obtener el resultado deseado:

 > players = ["LeBron James", "Lionel Messi", "Serena Williams"] => ["LeBron James", "Lionel Messi", "Serena Williams"] > sports_data = {"Serena Williams"=>"tennis", "LeBron James"=>"basketball"} => {"Serena Williams"=>"tennis", "LeBron James"=>"basketball"} > players.map { |player| sports_data.fetch(player, player) } => ["basketball", "Lionel Messi", "tennis"]
over 4 years ago · Santiago Trujillo Denunciar

0

Puede asignar la matriz a claves hash o mantener el elemento de la matriz en sí mismo: si falta la clave (devuelve nil ), conserve el elemento de la matriz:

 arr1.map { |k| hash1[k] || k } #=> ["basketball", "Lionel Messi", "tennis"]
over 4 years ago · Santiago Trujillo Denunciar

0

Si se supone que su hash devolverá la clave de forma predeterminada, podría usar un default_proc :

 hash = { 'Serena Williams' => 'tennis', 'LeBron James' => 'basketball' } hash.default_proc = proc { |hash, key| key }

Lo que te da:

 hash['LeBron James'] #=> "basketball" # explicit value hash['Lionel Messi'] #=> "Lionel Messi" # default value

o, usando una matriz:

 arr = ['LeBron James', 'Lionel Messi', 'Serena Williams'] hash.values_at(*arr) #=> ["basketball", "Lionel Messi", "tennis"]
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