2014-01-27 23 views
-1

如何將以下代碼優化爲單個或幾個步驟。有什麼數組方法做下面的東西?紅寶石陣列中的代碼優化

a=[1,2,3,4,5,6,7,8] 
a.each_slice(2).to_a.each do |nested_arr| 
    nested_arr.each do |val| 
    row << val 
    end 
    csv << row #sample csv object showed here to explain. 
end 

這背後的基本思想是,避免大量的數據插入到一個CSV文件

+0

「避免將批量數據插入到單個CSV文件中」所以...您想將數據拆分爲多個CSV文件?你想在這裏問什麼? – Ajedi32

回答

2

執行如下:

a=[1,2,3,4,5,6,7,8] 
a.each_slice(2) do |nested_arr| 
    csv.puts(nested_arr) # considering csv is a CSV object. 
end 

Enumerable#each_slice需要的塊,所以沒有必要to_a.each一部分請使用a.each_slice(2)。然後使用CSV#puts方法將數據插入到csv對象中。

我不知道你是如何創建csv對象的。所以這裏是我的方法:

require 'csv' 

path = "C:\\Users\\test.csv" 
a=(1..8).to_a 
CSV.open(path,"w") do |csv| 
    a.each_slice(2) do |nested_arr| 
     csv.puts(nested_arr) 
    end 
end