在嵌套数组中将字符串值解析为整数

时间:2018-04-10 04:13:28

标签: ruby

我有一个带字符串值的嵌套数组:

a = [["2000", "2004"], ["2005", "2007"]]

我正在将值转换为整数,如下所示:

int_val = []

a.each do |a|
  int_val << a.map(&:to_i)
end

int_val #=> [[2000, 2004], [2005, 2007]]

是否有任何简短的解决方案或一行代码? [["2000", "2004"], ["2005", "2007"]].map(&:to_i)无效。

4 个答案:

答案 0 :(得分:8)

&#34;二维&#34; map

a = [["2000", "2004"], ["2005", "2007"]]
a.map {|i| i.map(&:to_i) }  # => [[2000, 2004], [2005, 2007]]

答案 1 :(得分:4)

使用Enumerable#each_with_object

a = [["2000", "2004"], ["2005", "2007"]]
a.each_with_object([]) do |a, int_val|
  int_val << a.map(&:to_i)
end
#⇒ [[2000, 2004], [2005, 2007]]

它应该比map.map消耗更少的内存。(@pascalbetz指出这不是真的。)

答案 2 :(得分:4)

map

a.map { |i, j| [i.to_i, j.to_i] }

当然这不是一般解决方案,但对你的例子有好处。

答案 3 :(得分:1)

出于好奇:

a = [["2000", "2004"], ["2005", "2007"]]
a.flatten.map(&:to_i).each_slice(2).to_a
#⇒ [[2000, 2004], [2005, 2007]]