From: Stefano Crocco Date: 2007-09-18T00:25:45+09:00 Subject: Re: group array elements in groups of two Alle luned狸 17 settembre 2007, Emmanuel Oga ha scritto: > A better way to do this? : > > arr= [1, 2, 3, 4, 5, 6, 7, 8] > new= [] > while !arr.empty? > elem1, elem2= arr.pop, arr.pop > new << [elem2, elem1]; > end > new.reverse! > > new= [[1, 2], [3, 4], [5, 6], [7, 8]] > > Thanks! Use each_slice: require 'enumerator' arr = [1, 2, 3, 4, 5, 6, 7, 8] new = [] arr.each_slice(2){|s| new << s} or each_slice, enum_for an inject: require 'enumerator' arr = [1, 2, 3, 4, 5, 6, 7, 8] new = arr.enum_for(:each_slice , 2).inject([]){|res, c| res << c} I hope this helps Stefano