Ruby each_with_index

Learn via video courses
Topics Covered

Overview

The Ruby each_with_index method is a powerful tool in the Ruby programming language that allows you to iterate over a collection while simultaneously accessing the index of each element. It is part of the Enumerator class and provides a convenient way to perform tasks that require both the element and its index within a loop. This article will explore the syntax, parameters, return value, exceptions, and differences between the Ruby each_with_index and each_index methods. It will also provide examples to illustrate the usage of Ruby each_with_index in different scenarios.

Build an AI-First Career, Master the Complete Skillset

Choose from our industry-leading programs designed for career success

NSDC Certified

Modern Software and AI Engineering Program

Master full-stack development with AI integration

12 MonthsDuration
AI-LedCurriculum
Career SupportSupport
GoogleAmazonPaytm+1000 more
Go to Program
NSDC Certified

Modern Data Science and ML with specialisation in AI

Advanced data science techniques with AI specialization

12 MonthsDuration
AI-LedCurriculum
Career SupportSupport
GoogleAmazonPaytm+1000 more
Go to Program
NSDC Certified

Advanced AIML with Specialisation in Agentic AI

Deep dive into AIML with focus on Agentic systems

12 MonthsDuration
AI-LedCurriculum
Career SupportSupport
GoogleAmazonPaytm+1000 more
Go to Program
NSDC Certified

DevOps, Cloud & AI Platform Engineering

Build and manage AI-powered cloud infrastructure

12 MonthsDuration
AI-LedCurriculum
Career SupportSupport
GoogleAmazonPaytm+1000 more
Go to Program
NSDC Certified

AI Engineering Advanced Certification by IIT-Roorkee

Premier AI engineering certification from IIT-Roorkee

3 MonthsDuration
AI-LedCurriculum
Career SupportSupport
Program highlights
Go to Program
NSDC Certified

AI Forward Deployed Engineer Program

Full-stack engineering, production AI and client-facing consulting

12 MonthsDuration
AI-LedCurriculum
Career SupportSupport
GoogleAmazonPaytm+1000 more
Go to Program

Syntax

The syntax for the Ruby each_with_index method is as follows:

Here, collection refers to the object or collection you want to iterate over, such as an array or a hash. The block parameter element represents the current element being processed during each iteration, and index represents the index of that element within the collection.

Parameters

The Ruby each_with_index method takes two parameters: element and index. The element parameter represents the current element in the iteration, while the index parameter represents the index of that element within the collection.

Return Value

The return value of the Ruby each_with_index method is the original collection itself. This means that the method does not modify the collection but instead allows you to perform actions on each element while also accessing its index.

Exception

The Ruby each_with_index method does not raise any exceptions on its own. However, if an exception occurs within the block, it will propagate upwards and can be caught using standard exception-handling techniques.

Sharpen Your Fundamentals with Free Learning

How does enum#each_index differ from enum#with_each_index?

The each_index method and each_with_index method are similar in that they both provide access to the index of each element in a collection. However, there is a subtle difference between the two.

The each_index method is a shorter form of iteration that only provides the index and does not provide access to the element itself. It is useful when you only need to perform an action based on the index and do not require the element. The working of Ruby each_with_index is similar to a for loop.

On the other hand, the Ruby each_with_index method provides both the element and the index, allowing you to perform actions on each element while also having access to its index. This is especially useful when you need to manipulate or retrieve information from the elements based on their positions within the collection.

Here's an example to illustrate the difference:

As you can see, each_index only provides the index, while each_with_index allows you to access both the element and its index within the loop.

How Scaler Transformed Careers in Different Fields

₹23L
AVG CTC
SCALER PLACEMENT PROOF

Scaler learners achieved 2.5x salary growth with average post-Scaler CTC reaching ₹23L.

11,000+placements
650+companies
Verified data
Hiring Partners:
GoogleGoogleAmazonAmazonMicrosoftMicrosoftFlipkartFlipkartAdobeAdobe1200+ more

Examples

To further understand the functionality and usage of the each_with_index method, let's explore some examples:

Example 1: Iterating over an Array

Output:

In this example, we have an array of fruits. The Ruby each_with_index method is used to iterate over the array and print each fruit along with its corresponding index. The Ruby each_with_index can also be used to iterate over other data structures like sets, ranges, etc.

Example 2: Modifying Elements in Place

Output:

In this example, we have an array of numbers. The each_with_index method is used to iterate over the array and double the value of each element based on its index. The modified array is then printed using the inspect method.

Turn Learning into Career Growth

1200+Hiring Partners
89%Placement Rate
11,000+Placements
147%Avg Salary Increment
2.5XCareer Growth
₹23 LPAAvg Post-Scaler Salary
1200+Hiring Partners
89%Placement Rate
11,000+Placements
147%Avg Salary Increment
2.5XCareer Growth
₹23 LPAAvg Post-Scaler Salary

Example 3: Filtering and Selecting Elements

Output:

In this example, we have an array of numbers. The each_with_index method is used to iterate over the array and check if the index is odd. The corresponding element is added to the odd_indices array if the index is odd. Finally, the odd_indices array is printed.

Example 4: Nested Iteration

One of the powerful aspects of the Ruby each_with_index method is its ability to be used in nested iterations. Let's look at an example to understand how nested iteration with each_with_index works:

Output:

Example 5: Parallel Iteration

Parallel iteration allows you to iterate over multiple collections simultaneously while accessing corresponding elements and indices. Let's consider an example to illustrate parallel iteration using each_with_index:

Output:

Example 6: Handling Enumerables with Non-numeric Indices

The each_with_index method is commonly used with collections that have numeric indices, such as arrays. However, it can also be used with enumerables that have non-numeric indices, such as hashes or sets.

Let's explore an example using a hash:

Output:

In this code snippet, we iterate over the person hash using each_with_index. Since the hash does not have numeric indices, each iteration provides a key-value pair as the first element of the block, followed by the index as the second element.

By destructuring the key-value pair into separate variables (key, value), we can access and display the key, value, and index within the block.

Conclusion

  • Ruby's each_with_index method provides a convenient way to iterate over a collection while accessing both the element and its index.
  • It is part of the Enumerator class and provides a convenient way to perform tasks that require both the element and its index within a loop.
  • The each_with_index method takes two parameters: element and index.
  • The return value of the each_with_index method is the original collection itself.
  • The each_index method is a shorter form of iteration that only provides the index without access to the element, whereas the each_with_index method offers both the element and the index, enabling you to perform actions on each element while having access to its index.