2014-03-04 94 views
5

我有以下哈希,我正在尋找一種簡單的方法來檢查哈希中是否全部爲空。並非所有值始終在哈希中可見,所以有時哈希不包含end_date/start_date或其他任何值。檢查哈希是否包含任何空值

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"=>""}} 

在僞它希望這個

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

在這個例子中它意味着該散列將在循環結束時清空。

親切的問候

+2

請不要粘貼屏幕捕獲,如果它是文本。而是將其粘貼爲文本。 – sawa

+1

對不起,我編輯了主題並刪除了圖片。並粘貼了代碼。 – Vinozio

+0

在標題中,它表示檢查是否有空字段,並在文本中說明檢查是否一切都爲空。他們的意思不同。後者需要前者。 – sawa

回答

4

使用Hash#delete_if

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

感謝您的回覆,這是一種魅力!這真是太棒了,我非常感謝你! – Vinozio