On 2007-05-03 14:06:44 +0200, Josselin <josselin / wanadoo.fr> said: > given an array > > anArray = [["a", 1, 1], ["b", 1, 2], ["c", 1, 5], ["z", 1, 1], ["e", 1, > 5], ["f", 1, 6], ["g", 1, 1], ["h", 1, 3], ["i", 1, 1], ["j", 1, 2], > ["k", 1, 1], ["y", 1, 6], ["m", 1, 1], ["u", 1, 2], ["v", 1, 1], ["p", > 1, 4], ["q", 1, 5], ["r", 1, 1], ["n", 1, 1], ["t", 2, 3], ["s", 2, 2], > ["o", 2, 1], ["w", 2, 1], ["x", 2, 1], ["l", 2, 1], ["d", 2, 1]] > > I would like to get it sliced in groups of element having the same 2nd > and 3rd values > > sliced_array = [ > [ ["a", 1, 1],["g", 1, 1], ["i", 1, 1], ["k", 1, 1], ["m", 1, 1], ["n", > 1, 1],["r", 1, 1],["v", 1, 1],["z", 1, 1] ], > [ ["b", 1, 2],["j", 1, 2], ["u", 1, 2] ], > [ ["c", 1, 5],["e", 1, 5],["q", 1, 5] ], > [ ["d", 2, 1],["l", 2, 1], ["l", 2, 1], ["o", 2, 1],["w", 2, 1],["x", 2, 1] ], > [ ["f", 1, 6],["y", 1, 6] ], > [ ["h", 1, 3] ], > [ ["p", 1, 4] ], > [ ["s", 2, 2] ], > [ ["t", 2, 3] ] > ] > > I believe teh first step is to sort anArray.... then slicing similar > groups, but writing > anArray.sort {|a,b| a[1] <=> b[1]} > sorts only on first value... how can I sort on both.. ? > > thansk > > joss found the sort... but how to slice it now ? anArray.sort_by {|item| [item[1], item[2] ] } => [["a", 1, 1], ["z", 1, 1], ["v", 1, 1], ["r", 1, 1], ["i", 1, 1], ["m", 1, 1], ["g", 1, 1], ["k", 1, 1], ["n", 1, 1], ["j", 1, 2], ["u", 1, 2], ["b", 1, 2], ["h", 1, 3], ["p", 1, 4], ["c", 1, 5], ["e", 1, 5], ["q", 1, 5], ["f", 1, 6], ["y", 1, 6], ["l", 2, 1], ["x", 2, 1], ["o", 2, 1], ["w", 2, 1], ["d", 2, 1], ["s", 2, 2], ["t", 2, 3]] ["a", 1, 1], ["z", 1, 1], ["v", 1, 1], ["r", 1, 1], ["i", 1, 1], ["m", 1, 1], ["g", 1, 1], ["k", 1, 1] ["j", 1, 2], ["u", 1, 2], ["b", 1, 2] and so on.... ??? thanks joss