Ame*_*mer 2 ruby ruby-on-rails
我有这样一个数组:
[234,235,343,445]
我想把它转换成这样的样子
[[234],[235],[343],[445]
ruby 1.9.2中是否有核心库函数可以帮助我快速完成这项工作?如果不是有快速的方法?
我做了一个小测试
def test1
array = []
10000000.times do
array << rand(1000000)
end
time = Time.now
array.permutation(1).to_a
puts "test1 (permutation) ---> Time = #{Time.now - time}"
end
def test2
array = []
10000000.times do
array << rand(1000000)
end
time = Time.now
array.zip()
puts "test2 (zip)---> Time = #{Time.now - time}"
end
def test3
array = []
10000000.times do
array << rand(1000000)
end
time = Time.now
array.map { |a| [a] }
puts "test3 (map) ---> Time = #{Time.now - time}"
end
test1 #test1 (permutation) ---> Time = 2.235128
test2 #test2 (zip) ---> Time = 1.537088
test3 #test3 (map) ---> Time = 2.230127
Run Code Online (Sandbox Code Playgroud)
我不认为有一个核心功能,但有一个快速的方法:
irb(main):001:0> [234, 235 , 343, 445].map { |a| [a] }
=> [[234], [235], [343], [445]]
Run Code Online (Sandbox Code Playgroud)