search
Array.prototype.find
Returns the first element for which the callback returns truthy, or undefined if none match. Reach for it when you need the matching item itself, not just its index.
arr.find(callbackFn[, thisArg]) Parameters
| Parameter | Purpose |
|---|---|
| callbackFn(element, index, array) | Predicate; first element returning truthy wins |
| thisArg | Value used as `this` inside callbackFn |
Examples
console.log([1,2,3,4].find(n => n > 2)); Logs: 3
console.log([1,2,3].find(n => n > 99)); Logs: undefined
const users = [{id:1},{id:2},{id:3}]; console.log(users.find(u => u.id === 2)); Logs: {id: 2}
console.log([0,'',null].find(v => v !== null)); Logs: 0 (find returns the value even if it is falsy)
Gotcha
Returns undefined when nothing matches — check `=== undefined`, not truthiness (0 and '' are valid matches). Short-circuits on the first hit.
Related methods
Array.prototype.findIndex
Returns the index of the first element for which the callback returns truthy, or -1 if none match. Reach for it when you need the position — e.g. to splice or replace.
Array.prototype.findLast
Walks the array from the END and returns the last element for which the callback returns truthy (ES2023). Reach for it when the most recent matching entry is what you want.
Array.prototype.filter
Creates a new array containing every element for which the callback returned a truthy value. Reach for it to pare a list down to items matching a predicate.
Array.prototype.indexOf
Returns the first index where searchElement is strictly equal (===) to an array item, or -1. Reach for it for a fast, exact primitive lookup — but not for objects or NaN.
Array.prototype.includes
Returns true if the array contains searchElement using SameValueZero equality (ES2016). Reach for it as the readable boolean alternative to `indexOf(x) !== -1`.