On 23/nov/06, at 02:04, Daniel N wrote: > I want to check to see if two arrays contain the same values. > That is, are they the same array but not in the same order. def are_these_arrays_equal?(a1, a2) return false if a1.size != a2.size a2 = a2.dup # a2 will be modified, so let's duplicate it for i1 in a1 return false unless a2.include? i1 # need to delete just the *first* occurrence of i1 in a2 # (Array#delete deletes them all) found = false a2.delete_if {|i2| found = !found && i1 == i2 } end # a2 is now empty, since its size was equal to a1 size return true end This should work with multiple occurrences of the same object, different objects (so different object_id) that seem to be equal (by comparing them with ==), nil values (#find() is a bit tricky), objects that do not respond to <=>. Did I miss any case? Anyway I think it's a bit slow (delete_if goes on even if we deleted the only one we wanted to, moreover it duplicates a whole array), but who cares? We're using ruby, we probably aren't looking for speed anyway :P -- Gabriele Marrone