2016-03-02 56 views
0

我試圖刪除除第一個密鑰以外還有空值的哈希中的任何密鑰。我也試圖在一行上做到這一點。如何從哈希中刪除具有銀行值的密鑰,同時跳過第一個密鑰

這是我給出了一大堆語法錯誤。我一直在擺弄它嘗試修復語法錯誤,但沒有任何工作。我哪裏錯了?

hash.each_with_index do { |(key, value), i| value.blank? && i != 0 ? key.delete : } 

回答

2

一個襯裏:

hash.delete_if.with_index {|(k, v), i| v.nil? && i != 0 } 
+0

我現在認識到我有多複雜。 – Rob

0

使用select

h = { a: '', b: '', c: 1 } 
puts h.select.with_index { |subh, i| !(subh[1].to_s.empty?) || i == 0 } 
# => {:a=>'', :c=>1} 

你應該仔細想一想,如果你真的想使用哈希儘管當依靠排序。

+0

對不起,不發佈,但哈希會是這樣'H = {A: 「」,B: 「」,C: 「1」}'使用字符串作爲值。如果我用'.blank'替換'.nil'就足夠了? – Rob

+0

@ user3234020我更新了我的答案以符合您的規格。 – brito

相關問題