我正在读一个csv文件。 csv的标题之一称为case。某些行具有相同的大小写。我想把它们组合在一起。我还想在集合上使用reduce来将数据传递到新数组中:
filePosition
我希望密钥类似于18CA,这是一个案例编号。我希望集合是一个包含该案例编号的所有行的数组。而且我希望acc作为一个空数组开始,并在每次迭代时随数据一起增长。但是,key是nil,collection是nil,acc是group_by结果的当前迭代。我做错了什么?
答案 0 :(得分:1)
你的reduce
块参数只是向后,累加器是传递给块的第一个参数,可枚举元素是第二个。
csv.group_by { |i| i[2] }.reduce([]) do |acc, (key,collection)|
key
和collection
nil
的原因是你正在解构你的累加器值,它以一个空数组开头,基本上是:
key, collection = []
key # => nil
collection # => nil