Forum: Ruby on Rails Collect value

Posted by Maddy (Guest)
on 2013-01-21 07:34
(Received via mailing list)
Hi Everyone,

Good Day,

a=[ 'casual','sick','casual','sick','casual','sick','casual','sick' ]

I need to collect casual's count and sick's count like,
Caual :4
Sick :4

Thank you,
Posted by Bala kishore Pulicherla (balakishore)
on 2013-01-21 07:37
(Received via mailing list)
we can use a.count("casual") and viceversa.

On Mon, Jan 21, 2013 at 12:03 PM, Maddy <ashokkumar@shriramits.com> 
wrote:

> Thank you,
>
>
>



--
Mobile : +91 9035988755

Facebook : http://www.facebook.com/bala.kishore.21
linkedin : http://www.linkedin.com/profile/view?id=7562848
twitter : https://twitter.com/balakishorep
Posted by Ashokkumar Yuvarajan (Guest)
on 2013-01-21 07:38
(Received via mailing list)
thanks :)
On Mon, Jan 21, 2013 at 12:06 PM, bala kishore pulicherla <
balumca21@gmail.com> wrote:

> a.count("casual")





--

*"Attitude is a little thing that makes a big difference"*


Thanks & Regards
*Ashokkumar.Y*
*ROR-Developer
**email : ashokkumar@shriramits.com*
*Shriramits*


*
*
Posted by Rob Biedenharn (Guest)
on 2013-01-21 18:22
(Received via mailing list)
I tend to use a method like:

module Enumerable
  # Returns a Hash keyed by the value of the block to the number times 
that
  # value was returned.  If you have experience with the #group_by from
  # ActiveSupport, this would be like 
.group_by(&block).map{|k,a|[k,a.size]}
  # (except it is a Hash rather than an Array).
  def count_by
    counts = Hash.new(0)
    each {|e| counts[block_given? ? yield(e) : e] += 1}
    counts
  end
end

$ irb -r ./enumerable
irb1.9.3> a=[ 
'casual','sick','casual','sick','casual','sick','casual','sick' ]
#1.9.3 => ["casual", "sick", "casual", "sick", "casual", "sick", 
"casual", "sick"]
irb1.9.3> a.count_by
#1.9.3 => {"casual"=>4, "sick"=>4}

This keeps you from iterating over the source multiple times, too.

-Rob

On Jan 21, 2013, at 1:37 AM, Ashokkumar Yuvarajan wrote:

> thanks :)
> On Mon, Jan 21, 2013 at 12:06 PM, bala kishore pulicherla <balumca21@gmail.com> 
wrote:
> a.count("casual")
>
On Mon, Jan 21, 2013 at 12:03 PM, Maddy <ashokkumar@shriramits.com> 
wrote:
Hi Everyone,

Good Day,

a=[ 'casual','sick','casual','sick','casual','sick','casual','sick' ]

I need to collect casual's count and sick's count like,
Caual :4
Sick :4

Thank you,
Posted by Jordon Bedwell (Guest)
on 2013-01-21 18:29
(Received via mailing list)
On Mon, Jan 21, 2013 at 11:21 AM, Rob Biedenharn
<rob@agileconsultingllc.com> wrote:
>     counts
>   end
> end

Please do not teach people to monkey patch a class directly, if you
plan to play dirty and reopen a class be nice enough to make your own
module and then send(:include, MyModuleExt) so that people know where
it is coming from easily, rather than leaving people in the dark as to
what the hell is going on when they start looking for the method in
the stdlib docs.
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.