From: Robert Klemme Date: 2011-05-15T22:41:54+09:00 Subject: Re: Counting how many times the same elements occurs in an array? On 15.05.2011 15:06, Thomas Greenwood wrote: > I'm sure your solutions are better than mine, what I ended up doing; > > xml_events = Array.new > temp_array = Array.new > > [...] > #extract xml data and assign it to the events array. > [...] > > xml_events.each{|x| > if temp_array.include?(x) == false This is dangerous: in Ruby false and nil are treated as boolean false. It's better to not compare with boolean constants but rather to use boolean operators and logic. In your case you could do if !temp_array.include?(x) unless temp_array.include?(x) > temp_array<< x > puts "#{x} occurs #{xml_events.count(x)} times" > end > } > > A kludge but it does the job. Your code has effort O(n*n) if I am not mistaken while the approach with the Hash storage of counters only has O(n). That might not really make a difference in your case but from the fact that you are iterating xml_events over and over again (same for temp_array btw.) you might see that it is "ugly" in a way. > Thanks for your help. You're welcome. Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/