2014-03-04 11 views
5

Ich habe den folgenden Hash und ich suche nach einer einfachen Möglichkeit zu überprüfen, ob alles im Hash leer ist. Nicht alle Werte sind immer im Hash sichtbar, daher ist der Hash manchmal ohne end_date/start_date oder irgendetwas anderes.Überprüfen, ob Hash leere Werte enthält

test 
=> {"0"=> 
    {"_destroy"=>"", 
    "START_DATE"=>"", 
    "END_DATE"=>"", 
    "EMPLOYER"=>"", 
    "JOB_TITEL"=>"", 
    "FUNCTIONAL_AREA"=>"", 
    "INDUSTRY"=>"", 
    "DESCRIPTION_TXT"=>"", 
    "COUNTRY"=>"", 
    "CITY"=>"", 
    "REGION"=>"", 
    "CONTRACT_TYPE"=>""}, 
"1"=> 
    {"_destroy"=>"", 
    "START_DATE"=>"", 
    "END_DATE"=>"", 
    "EMPLOYER"=>"", 
    "JOB_TITEL"=>"", 
    "FUNCTIONAL_AREA"=>"", 
    "INDUSTRY"=>"", 
    "DESCRIPTION_TXT"=>"", 
    "COUNTRY"=>"", 
    "CITY"=>"", 
    "REGION"=>"", 
    "CONTRACT_TYPE"=>""}, 
"2"=> 
    {"_destroy"=>"", 
    "START_DATE"=>"", 
    "END_DATE"=>"", 
    "EMPLOYER"=>"", 
    "JOB_TITEL"=>"", 
    "FUNCTIONAL_AREA"=>"", 
    "INDUSTRY"=>"", 
    "DESCRIPTION_TXT"=>"", 
    "COUNTRY"=>"", 
    "CITY"=>"", 
    "REGION"=>"", 
    "CONTRACT_TYPE"=>""}} 

In Pseudo-Code würde es so

Start loop 
-> check if current position contains an empties 
=> if all is empty delete position 
-> continue 
end loop 

In diesem Beispiel bedeutet dies, dass der Hash am Ende der Schleife leer sein wird.

Mit freundlichen Grüßen

+2

Bitte fügen Sie nicht einen Screenshot, wenn es Text ist. Fügen Sie es stattdessen als Text ein. – sawa

+1

Es tut mir leid, dass ich das Thema bearbeitet und das Bild entfernt habe. Und den Code eingefügt. – Vinozio

+0

Im Titel sagt es, nach leeren Feldern zu suchen, und im Text sagt es, ob alles leer ist. Sie meinen verschiedene Dinge. Letzteres bringt das erstere mit sich. – sawa

Antwort

4

Verwendung Hash#delete_if:

test.delete_if { |i,h| h.all? { |k,v| v.empty? } } 
+1

Danke für Ihre Antwort, das funktioniert als ein Charme! Das ist wirklich genial, ich danke dir sehr! – Vinozio

Verwandte Themen