find, findIndex (ES6+): Locating specific elements
The find
and findIndex
methods are powerful ES6+ additions to JavaScript for iterating over arrays and locating specific elements that meet a certain condition. The find
method returns the first element that satisfies the provided testing function, while findIndex
returns the index of that element. If no element satisfies the condition, find
returns undefined
, and findIndex
returns -1
.
Example 1: Using find
to get the first even number
const numbers = [1, 3, 5, 8, 10, 11];
// Use the find method to get the first even number
const firstEven = numbers.find(number => number % 2 === 0);
console.log(firstEven); // Output: 8
Explanation The code above defines an array of numbers. The find
method is called on the numbers
array, and it uses an arrow function (number => number % 2 === 0)
as its predicate. This function checks if a number is even, and find
returns the first element for which the predicate is true.
Example 2: Finding an object in an array by a property
const users = [
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' },
{ id: 3, name: 'Doe' }
];
// Find the user with an id of 2
const user = users.find(user => user.id === 2);
console.log(user); // Output: { id: 2, name: 'Jane' }
Explanation This example demonstrates how to find a specific object within an array based on one of its properties. The find
method iterates through the users
array, and for each user object, it checks if the id
property is equal to 2
. It returns the first object that matches this condition.
Example 3: Finding a string with a specific length
const words = ['apple', 'banana', 'kiwi', 'orange'];
// Find the first word with more than 5 characters
const longWord = words.find(word => word.length > 5);
console.log(longWord); // Output: 'banana'
Explanation In this code, we have an array of strings. The find
method is used with a callback function that checks the length
of each word
. It returns the first word in the array that has a length greater than 5.
Example 4: Using findIndex
to get the index of the first even number
const numbers = [1, 3, 5, 8, 10, 11];
// Use the findIndex method to get the index of the first even number
const firstEvenIndex = numbers.findIndex(number => number % 2 === 0);
console.log(firstEvenIndex); // Output: 3
Explanation This example is similar to the first, but it uses findIndex
instead of find
. The callback function is the same, but findIndex
returns the index of the first element that satisfies the condition, which is 3
for the number 8
.
Example 5: Using findIndex
when an element is not found
const fruits = ['apple', 'banana', 'kiwi'];
// Try to find the index of 'grape'
const grapeIndex = fruits.findIndex(fruit => fruit === 'grape');
console.log(grapeIndex); // Output: -1
Explanation This example showcases what happens when findIndex
does not find an element that matches the condition. The method iterates through the fruits
array, but since 'grape' is not present, the callback function never returns true. Consequently, findIndex
returns -1
.