# Iterate over array and add numbers of each object

**URL:** <https://www.ruby-forum.com/t/iterate-over-array-and-add-numbers-of-each-object/150086>\
**Category:** Ruby\
**Created:** [October 3, 2008, 2:18pm UTC](https://www.ruby-forum.com/t/iterate-over-array-and-add-numbers-of-each-object/150086 "2008-10-03T14:18:54Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![josh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/45deac/32.png) [@josh](https://www.ruby-forum.com/u/josh)\
**Post date:** [October 3, 2008, 2:18pm UTC](https://www.ruby-forum.com/t/iterate-over-array-and-add-numbers-of-each-object/150086/1 "2008-10-03T14:18:54Z")

</div>

Hi all

number = 0;  
objects.each do |o|  
number += o.some\_number  
end  
return number

I guess there’s a much more beautiful way for this, or isn’t? Something  
like collect or so…

Thanks 🙂  
Josh

---

<div class="post-metadata">

**Author:** ![josh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/45deac/32.png) [@josh](https://www.ruby-forum.com/u/josh)\
**Post date:** [October 3, 2008, 2:24pm UTC](https://www.ruby-forum.com/t/iterate-over-array-and-add-numbers-of-each-object/150086/2 "2008-10-03T14:24:00Z")

</div>

Alle Friday 03 October 2008, Joshua M. ha scritto:

> Thanks 🙂  
> Josh

If objects is an array, or any other thing which mixes-in the Enumerable  
module, you can use inject:

objects.inject(0){|tot, o| tot + o.some\_number}

Stefano

---

<div class="post-metadata">

**Author:** ![josh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/45deac/32.png) [@josh](https://www.ruby-forum.com/u/josh)\
**Post date:** [October 3, 2008, 2:26pm UTC](https://www.ruby-forum.com/t/iterate-over-array-and-add-numbers-of-each-object/150086/3 "2008-10-03T14:26:20Z")

</div>

> number = 0;  
> objects.each do |o|  
> number += o.some\_number  
> end  
> return number
> 
> I guess there’s a much more beautiful way for this, or isn’t? Something  
> like collect or so…

number = objects.inject(0) { |sum, obj| sum + obj.some\_number }

---

<div class="post-metadata">

**Author:** ![josh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/45deac/32.png) [@josh](https://www.ruby-forum.com/u/josh)\
**Post date:** [October 3, 2008, 2:28pm UTC](https://www.ruby-forum.com/t/iterate-over-array-and-add-numbers-of-each-object/150086/4 "2008-10-03T14:28:12Z")

</div>

2008/10/3 Joshua M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> Hi all
> 
> number = 0;  
> objects.each do |o|  
> number += o.some\_number  
> end  
> return number

This is what inject is for.

number = objects.inject(0) do |sum,o|  
sum += o.some\_number  
end

Farrel

---

<div class="post-metadata">

**Author:** ![josh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/45deac/32.png) [@josh](https://www.ruby-forum.com/u/josh)\
**Post date:** [October 3, 2008, 7:24pm UTC](https://www.ruby-forum.com/t/iterate-over-array-and-add-numbers-of-each-object/150086/5 "2008-10-03T19:24:25Z")

</div>

require “facets”

number = objects.map(&:some\_number).sum

gegroet,  
Erik V.

---

<div class="post-metadata">

**Author:** ![josh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/45deac/32.png) [@josh](https://www.ruby-forum.com/u/josh)\
**Post date:** [October 3, 2008, 2:50pm UTC](https://www.ruby-forum.com/t/iterate-over-array-and-add-numbers-of-each-object/150086/6 "2008-10-03T14:50:59Z")

</div>

Is that an echo I hear? 🙂
