以4为增量迭代Ruby数组

时间:2013-08-23 18:16:00

标签: ruby arrays csv

我有以下数组:

csv_array = [1,2,3,4,5,6,7,8,9,10]

我需要将数组中的每个项目写入单独的CSV行,每组4个。如果我这样做

CSV.open("Content_File.csv", "wb") do |csv|
    csv << csv_array
end

我得到一行中整个数组的csv文件。

我需要我的csv文件看起来像这样:

1,2,3,4

5,6,7,8

9,10

如何编写ruby脚本来说明

csv << csv_array[0..3]
csv << csv_array[4..7]

依此类推,无论数组中有多少项?我使用的是ruby 1.9.3。

2 个答案:

答案 0 :(得分:4)

csv_array = [1,2,3,4,5,6,7,8,9,10]

csv_array.each_slice(4) do |chunk|
  p chunk
end
# >> [1, 2, 3, 4]
# >> [5, 6, 7, 8]
# >> [9, 10]

答案 1 :(得分:2)

尝试

 csv_array.each_slice(4) {|a| csv.push(a)}

下面:

csv_array = [1,2,3,4,5,6,7,8,9,10]
csv = []
csv_array.each_slice(4) {|a| csv.push(a)}
csv 
# => [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10]]