# Iterator/array question

**URL:** <https://www.ruby-forum.com/t/iterator-array-question/60578>\
**Category:** Ruby\
**Created:** [May 15, 2006, 7:44pm UTC](https://www.ruby-forum.com/t/iterator-array-question/60578 "2006-05-15T19:44:29Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Susan\_Sash](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/46a35a/32.png) [@Susan\_Sash](https://www.ruby-forum.com/u/Susan_Sash)\
**Post date:** [May 15, 2006, 7:44pm UTC](https://www.ruby-forum.com/t/iterator-array-question/60578/1 "2006-05-15T19:44:29Z")

</div>

Is there a way to iterate through an array, getting the index and the  
object at the same time?

For instance, right now I know two ways of going through an array:  
array.each do |element|  
print element  
end

for i in 0…(array.size - 1) do |i|  
print array[i]  
end

Is there a way to mix these two together? As in something like  
array.each do |element, i|  
print element.to\_s + "is at index " + i.to\_s  
end

without maintaining a counter through the array?  
(Without doing this:  
index = 0  
array.each do |element|  
print element.to\_s + "is at index " + index.to\_s  
index += 1  
end)

Thanks!

---

<div class="post-metadata">

**Author:** ![Susan\_Sash](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/46a35a/32.png) [@Susan\_Sash](https://www.ruby-forum.com/u/Susan_Sash)\
**Post date:** [May 15, 2006, 7:58pm UTC](https://www.ruby-forum.com/t/iterator-array-question/60578/2 "2006-05-15T19:58:15Z")

</div>

On May 15, 2006, at 7:48 PM, Susan Sash wrote:

> Is there a way to iterate through an array, getting the index and the  
> object at the same time?

## $ri each\_with\_index --------------------------------------------- Enumerable#each\_with\_index enum.each\_with\_index {|obj, i| block } -\> enum

```
  Calls block with two arguments, the item and its index, for each
  item in enum.

     hash = Hash.new
     %w(cat dog wombat).each_with_index {|item, index|
       hash[item] = index
     }
     hash #=> {"cat"=>0, "wombat"=>2, "dog"=>1}

```

– Daniel

---

<div class="post-metadata">

**Author:** ![Susan\_Sash](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/46a35a/32.png) [@Susan\_Sash](https://www.ruby-forum.com/u/Susan_Sash)\
**Post date:** [May 15, 2006, 8:04pm UTC](https://www.ruby-forum.com/t/iterator-array-question/60578/3 "2006-05-15T20:04:31Z")

</div>

2006/5/15, Daniel H. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> ```
> item in enum.
> 
> hash = Hash.new
> %w(cat dog wombat).each_with_index {|item, index|
> hash[item] = index
> }
> hash #=> {"cat"=>0, "wombat"=>2, "dog"=>1}
> 
> ```

Too bad you disclosed the solution already - I wanted to trade it in  
for those turtles…  
😉

robert
