将每个值分配给数组并分别访问数组的每个元素

时间:2014-01-08 18:25:32

标签: ruby nokogiri

我如何将values分配给多维数组,以便我可以通过索引访问每个值?

page = Nokogiri::HTML(open(url))
            rows = page.css('table tr td')

            times = rows.length - 16
            rows[0..times].each { |row|
                            values = row.text.gsub(/\r\n?/, "").strip
#assign to array so I could access array[0] or array[6]
            }

end

此外,是否可以访问.each块之外的数组?在结束puts values之前,我唯一可以做的就是}

我对红宝石很新,所以我很抱歉我的无知。

2 个答案:

答案 0 :(得分:0)

使用map

array = rows[0..times].map do |row|
  row.text.gsub(/\r\n?/, "").strip
end

这将从块的返回值中构建一个新数组,该数组在输入数组的每个元素上调用。

答案 1 :(得分:0)

您可以使用Enumerable#map执行以下操作:

  

为枚举中的每个元素返回一个新数组,其中包含一次运行块的结果。

 array = rows[0..times].map { |row| row.text.gsub(/\r\n?/, "").strip }