Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

237
Visualizações
¿Comprobar si existen varios pares clave-valor en un hash de Ruby?

Tengo los siguientes pares clave-valor de hash de Ruby:

 [ { "trait_type"=>"Status", "value"=>"Unbuilt", "display_type"=>nil, "max_value"=>nil, "trait_count"=>4866, "order"=>nil } ]

Lo que necesito verificar es ver si los siguientes pares clave-valor están presentes:

 { "value"=>"Unbuilt", "trait_type"=>"Status" }

Esencialmente querer algo en el sentido de...

 traits = [{"trait_type"=>"Status", "value"=>"Unbuilt", "display_type"=>nil, "max_value"=>nil, "trait_count"=>4866, "order"=>nil}] filter_traits = {"value"=>"Unbuilt", "trait_type"=>"Status"} traits.include? filter_traits
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Si está utilizando Ruby >= 2.3, hay una nueva y elegante operación Hash >= Hash que es conceptualmente similar a un contenedor hipotético contains?

Usando su matriz de traits :

 trait = traits[0] trait >= {"trait_type" => "Status", "value" => "Unbuilt"} # => true trait >= {"trait_type" => "Status", "value" => "Built"} # => false

Así que podrías intentar algo como:

 traits.select{|trait| trait >= filter_traits }.length > 0 # => true
over 4 years ago · Santiago Trujillo Relatório

0

arr = [ { "trait_type"=>"Status", "value"=>"Unbuilt", "display_type"=>nil, "max_value"=>nil, "trait_count"=>4866, "order"=>nil } ]
 h1 = { "value"=>"Unbuilt", "trait_type"=>"Status" } h2 = { "value"=>"Rebuilt", "trait_type"=>"Status" }

Aquí hay tres soluciones.

 arr[0].slice(*h1.keys) == h1 #=> true arr[0].slice(*h2.keys) == h2 #=> false

 arr[0].values_at(h1.keys) == h1.values #=> true arr[0].values_at(h2.keys) == h2.values #=> false

 arr[0] == arr[0].merge(h1) #=> true arr[0] == arr[0].merge(h2) #=> false
over 4 years ago · Santiago Trujillo Relatório

0

También tenemos el acertadamente llamado all? y any? métodos que deberían hacer exactamente lo que está buscando de una manera muy lógica.

Todo lo que tenemos que hacer es recorrer el hash filter_traits y probar si todos (o alguno) de esos pares key:value son iguales a ( == ) cualquier par clave:valor correspondiente dentro de su matriz de traits :

 traits = [{"trait_type"=>"Status", "value"=>"Unbuilt", "display_type"=>nil, "max_value"=>nil, "trait_count"=>4866, "order"=>nil}] filter_traits = {"value"=>"Unbuilt", "trait_type"=>"Status"} filter_traits.all? {|k, v| filter_traits[k] == traits[0][k]} #=> true filter_traits = {"value"=>"Built", "trait_type"=>"Status"} filter_traits.all? {|k, v| filter_traits[k] == traits[0][k]} #=> false filter_traits.any? {|k, v| filter_traits[k] == traits[0][k]} #=> true
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda