2016-03-02 32 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

相关问题