Lodash find Multiple Matches: What It Returns

When querying collections in JavaScript using the Lodash utility library, understanding how methods handle duplicate matches is essential for predictable application logic. This article explains the exact return value of the _.find method when multiple elements satisfy the search criteria, explains how its iteration mechanism works, and highlights the difference between _.find and alternative methods like _.filter.

The Return Value of _.find

When multiple elements in a collection match the predicate condition, Lodash's _.find method returns only the first matching element. It does not return an array or a list of elements; it returns the single, individual element that was encountered first during iteration.

The method traverses the collection from left to right (in standard index or key order). As soon as the predicate returns a truthy value for an element, _.find immediately short-circuits, halts further iteration, and returns that element. Any subsequent elements that also match the condition are completely ignored.

Code Example

const _ = require('lodash');

const users = [
  { id: 1, name: 'Alice', role: 'admin' },
  { id: 2, name: 'Bob', role: 'user' },
  { id: 3, name: 'Charlie', role: 'admin' }
];

// Querying for the role 'admin', which has two matches (Alice and Charlie)
const result = _.find(users, { role: 'admin' });

console.log(result);
// Output: { id: 1, name: 'Alice', role: 'admin' }

In this example, even though both Alice (index 0) and Charlie (index 2) have the role 'admin', _.find stops at Alice and returns that single object.

When to Use _.filter Instead

If your use case requires retrieving every element that matches the criteria rather than just the first, use _.filter instead of _.find.

While _.find returns the single matching value (or undefined if no match is found), _.filter inspects the entire collection and returns an array containing all matching elements. Using the same dataset, _.filter(users, { role: 'admin' }) would return [{ id: 1, name: 'Alice', role: 'admin' }, { id: 3, name: 'Charlie', role: 'admin' }].