【问题标题】:Check if hash contains any empty values检查哈希是否包含任何空值
【发布时间】:2014-04-06 12:58:34
【问题描述】:

我有以下哈希,我正在寻找一种简单的方法来检查哈希中的所有内容是否为空。并非所有值在散列中始终可见,因此有时散列没有 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

在本例中,这意味着哈希在循环结束时将为空。

亲切的问候

【问题讨论】:

  • 如果是文本,请不要粘贴屏幕截图。而是将其粘贴为文本。
  • 很抱歉我编辑了主题并删除了图片。并粘贴代码。
  • 在标题中,它说检查任何空字段,在文本中,它说检查是否所有内容都是空的。他们的意思不同。后者包含前者。
  • 我全部改成数值了。

标签: ruby-on-rails ruby loops hash


【解决方案1】:

使用Hash#delete_if:

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

【讨论】:

  • 感谢您的回复,这很有魅力!这真是很棒的编码,非常感谢!
猜你喜欢
  • 1970-01-01
  • 2017-04-28
  • 2013-11-22
  • 1970-01-01
  • 2017-04-13
  • 1970-01-01
  • 1970-01-01
  • 2019-09-21
  • 2019-08-08
相关资源
最近更新 更多