我有一个带字符串值的嵌套数组:
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)
无效。
答案 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]]
它应该比(@pascalbetz指出这不是真的。)map.map
消耗更少的内存。
答案 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]]