Ruby:删除散列数组

时间:2016-12-16 02:10:53

标签: arrays ruby hash nokogiri

我抓的内容包括一些空白元素。如果没有数据(最好),我或者需要停止设置变量,或者之后只做一些手术并完全删除包含空格的哈希。

这是我的代码:

eqs = []

nokogiri_page.xpath('//table/tr').each do |row|
  date = row.xpath('td[1]/a/text()').text.strip
  location = row.xpath('td[5]/text()').text.strip

  eqs.push(
    date: date,
    location: location
  )
end

其中一些是空白的,我事先无法知道。所以我尝试迭代数组并删除空白值:

eqs.each do |event|
  event.reject! {|k, v| v.empty? || v=="  " || v=="" }
end

这成功删除了空白键和值,但我仍然留下空的花括号......

输出:

[
 {},
 {},
 {},
 {
    :date=>"2016-12-14 13:19:55",
    :location=>"Myanmar"
 },
 {
    :date=>"2016-12-13 17:57:04",
    :location=>"Northern Sumatra, Indonesia"
 }
]

我想完全摆脱空洞的哈希!任何人都知道我在这里出错了吗?

1 个答案:

答案 0 :(得分:5)

你可以使用Array#delete_if

arr = [{}, {}]
arr.delete_if &:empty?
# i.e. arr.delete_if { |hash| hash.empty? }
arr.empty?
# => true