JavaScript Array Search Methods
What are Array Search Methods?
Array Search Methods are used to:
- Find the position (index) of an element.
- Check whether an element exists.
- Retrieve an element that satisfies a condition.
- Find the index of an element that matches a condition.
- Search from the beginning or the end of an array.
Common Array Search Methods
Method Purpose ReturnsindexOf()
Finds the first occurrence of a value
Index or -1
lastIndexOf()
Finds the last occurrence of a value
Index or -1
includes()
Checks whether a value exists
true / false
find()
Finds the first matching element
Element or undefined
findIndex()
Finds the index of the first matching element
Index or -1
findLast() (ES2023)
Finds the last matching element
Element or undefined
findLastIndex() (ES2023)
Finds the last matching index
Index or -1
1. Array.indexOf()
Definition
The indexOf() method searches an array for a specified value and returns the index of its first occurrence.
If the value is not found, it returns -1.
Syntax
array.indexOf(searchElement)
array.indexOf(searchElement, startIndex)
Enter fullscreen mode Exit fullscreen mode
Parameters
Parameter DescriptionsearchElement
Value to search for
startIndex (optional)
Index where the search starts
Returns
- Index of the first matching element.
-
-1if not found.
Internal Working
Suppose:
let fruits = ["Apple", "Orange", "Mango", "Orange"];
Enter fullscreen mode Exit fullscreen mode
Memory:
Index
0 → Apple
1 → Orange
2 → Mango
3 → Orange
Enter fullscreen mode Exit fullscreen mode
When:
fruits.indexOf("Orange");
Enter fullscreen mode Exit fullscreen mode
JavaScript starts from index 0:
- Apple ❌
- Orange ✅ Found
Stops immediately and returns:
1
Enter fullscreen mode Exit fullscreen mode
Example
let fruits = ["Apple", "Orange", "Banana"];
console.log(fruits.indexOf("Orange"));
Enter fullscreen mode Exit fullscreen mode
Output
1
Enter fullscreen mode Exit fullscreen mode
Example – Not Found
let fruits = ["Apple", "Orange"];
console.log(fruits.indexOf("Mango"));
Enter fullscreen mode Exit fullscreen mode
Output
-1
Enter fullscreen mode Exit fullscreen mode
Example – Start Position
let fruits = ["Apple", "Orange", "Banana", "Orange"];
console.log(fruits.indexOf("Orange", 2));
Enter fullscreen mode Exit fullscreen mode
Output
3
Enter fullscreen mode Exit fullscreen mode
Real-Time Example
Suppose an e-commerce site wants to know whether a product category exists.
let categories = ["Mobiles", "Laptops", "TV"];
let position = categories.indexOf("Laptops");
console.log(position);
Enter fullscreen mode Exit fullscreen mode
Output
1
Enter fullscreen mode Exit fullscreen mode
Time Complexity [TBD]
Case Complexity Best O(1) Worst O(n)Common Mistake
if (arr.indexOf("Apple"))
Enter fullscreen mode Exit fullscreen mode
Wrong.
If Apple is at index 0, JavaScript treats 0 as false.
Correct:
if (arr.indexOf("Apple") !== -1)
Enter fullscreen mode Exit fullscreen mode
Interview Questions
Q. What does indexOf() return if the value is not found?
-1
Enter fullscreen mode Exit fullscreen mode
2. Array.lastIndexOf()
Definition
The lastIndexOf() method searches from the end of the array and returns the last matching index.
Syntax
array.lastIndexOf(searchElement)
array.lastIndexOf(searchElement, fromIndex)
Enter fullscreen mode Exit fullscreen mode
Parameters
Parameter DescriptionsearchElement
Value to search
fromIndex (optional)
Index to start searching backward
Returns
Last matching index or -1.
Internal Working
let colors = ["Red", "Blue", "Green", "Blue"];
Enter fullscreen mode Exit fullscreen mode
Memory:
0 → Red
1 → Blue
2 → Green
3 → Blue
Enter fullscreen mode Exit fullscreen mode
JavaScript starts from the last index:
- Blue ✅
Returns:
3
Enter fullscreen mode Exit fullscreen mode
Example
let colors = ["Red", "Blue", "Green", "Blue"];
console.log(colors.lastIndexOf("Blue"));
Enter fullscreen mode Exit fullscreen mode
Output
3
Enter fullscreen mode Exit fullscreen mode
Real-Time Example
Suppose a browser stores recently visited pages.
let history = ["Home", "Products", "Cart", "Products"];
console.log(history.lastIndexOf("Products"));
Enter fullscreen mode Exit fullscreen mode
Output
3
Enter fullscreen mode Exit fullscreen mode
Time Complexity
O(n)
Best Practice
Use lastIndexOf() when duplicate values exist and you need the most recent occurrence.
3. Array.includes()
Definition
The includes() method checks whether a value exists in an array.
It returns:
truefalse
Unlike indexOf(), you don’t have to compare with -1.
Syntax
array.includes(value)
array.includes(value, startIndex)
Enter fullscreen mode Exit fullscreen mode
Parameters
Parameter Descriptionvalue
Value to search
startIndex (optional)
Starting position
Returns
Boolean
Internal Working
Suppose:
let skills = ["HTML", "CSS", "JavaScript"];
Enter fullscreen mode Exit fullscreen mode
JavaScript compares each element.
If found:
true
Enter fullscreen mode Exit fullscreen mode
Else:
false
Enter fullscreen mode Exit fullscreen mode
Example
let skills = ["HTML", "CSS", "JavaScript"];
console.log(skills.includes("CSS"));
Enter fullscreen mode Exit fullscreen mode
Output
true
Enter fullscreen mode Exit fullscreen mode
Example
console.log(skills.includes("Python"));
Enter fullscreen mode Exit fullscreen mode
Output
false
Enter fullscreen mode Exit fullscreen mode
Real-Time Example
Netflix Premium Features
let features = ["4K", "HDR", "Offline Download"];
if (features.includes("HDR")) {
console.log("HDR Supported");
}
Enter fullscreen mode Exit fullscreen mode
Output
HDR Supported
Enter fullscreen mode Exit fullscreen mode
Time Complexity
O(n)
Common Mistake
Using:
indexOf() != -1
Enter fullscreen mode Exit fullscreen mode
instead of
includes()
Enter fullscreen mode Exit fullscreen mode
includes() is more readable when you only need to know whether the value exists.
Interview Question
Which is better?
includes()
Enter fullscreen mode Exit fullscreen mode
or
indexOf()
Enter fullscreen mode Exit fullscreen mode
Use:
-
includes()→ existence check. -
indexOf()→ position required.
4. Array.find()
Definition
The find() method returns the first element that satisfies a given condition.
If no element matches, it returns undefined.
Syntax
array.find(callback)
array.find(callback, thisArg)
Enter fullscreen mode Exit fullscreen mode
Callback Parameters
(element, index, array)
Enter fullscreen mode Exit fullscreen mode
Parameter Descriptionelement
Current element
index
Current index
array
Original array
Returns
Matching element or undefined.
Internal Working
Suppose:
let numbers = [10, 25, 30, 40];
Enter fullscreen mode Exit fullscreen mode
Callback:
num > 20
Enter fullscreen mode Exit fullscreen mode
JavaScript checks:
10 ❌
25 ✅
Enter fullscreen mode Exit fullscreen mode
Stops immediately.
Returns:
25
Enter fullscreen mode Exit fullscreen mode
Example
let numbers = [10, 25, 30, 40];
let result = numbers.find(num => num > 20);
console.log(result);
Enter fullscreen mode Exit fullscreen mode
Output
25
Enter fullscreen mode Exit fullscreen mode
Real-Time Example
Find the first student who scored above 90.
let marks = [65, 72, 95, 88];
let topper = marks.find(mark => mark > 90);
console.log(topper);
Enter fullscreen mode Exit fullscreen mode
Output
95
Enter fullscreen mode Exit fullscreen mode
Time Complexity
O(n)
Common Mistake
find() returns the element, not its index.
Interview Question
Difference between find() and filter()?
-
find()→ first matching element. -
filter()→ all matching elements.
5. Array.findIndex()
Definition
Returns the index of the first element satisfying the condition.
If not found:
-1
Enter fullscreen mode Exit fullscreen mode
Syntax
array.findIndex(callback)
Enter fullscreen mode Exit fullscreen mode
Example
let ages = [15, 18, 25, 40];
console.log(ages.findIndex(age => age >= 18));
Enter fullscreen mode Exit fullscreen mode
Output
1
Enter fullscreen mode Exit fullscreen mode
Real-Time Example
Locate the first pending order.
let orders = [
{ id: 1, status: "Completed" },
{ id: 2, status: "Pending" },
{ id: 3, status: "Pending" }
];
let index = orders.findIndex(order => order.status === "Pending");
console.log(index);
Enter fullscreen mode Exit fullscreen mode
Output
1
Enter fullscreen mode Exit fullscreen mode
Time Complexity
O(n)
6. Array.findLast() (ES2023)
Definition
Returns the last element that satisfies a condition.
Syntax
array.findLast(callback)
Enter fullscreen mode Exit fullscreen mode
Example
let numbers = [12, 18, 25, 30];
let result = numbers.findLast(num => num > 20);
console.log(result);
Enter fullscreen mode Exit fullscreen mode
Output
30
Enter fullscreen mode Exit fullscreen mode
Real-Time Example
Find the latest completed transaction.
let transactions = [
{ id: 1, status: "Pending" },
{ id: 2, status: "Completed" },
{ id: 3, status: "Completed" }
];
let latest = transactions.findLast(t => t.status === "Completed");
console.log(latest);
Enter fullscreen mode Exit fullscreen mode
Output
{ id: 3, status: "Completed" }
Enter fullscreen mode Exit fullscreen mode
Time Complexity
O(n)
7. Array.findLastIndex() (ES2023)
Definition
Returns the index of the last matching element.
Syntax
array.findLastIndex(callback)
Enter fullscreen mode Exit fullscreen mode
Example
let numbers = [5, 15, 25, 35];
console.log(numbers.findLastIndex(num => num > 20));
Enter fullscreen mode Exit fullscreen mode
Output
3
Enter fullscreen mode Exit fullscreen mode
Real-Time Example
Find the index of the last product that is out of stock.
let products = [
{ name: "Laptop", stock: 5 },
{ name: "Mouse", stock: 0 },
{ name: "Keyboard", stock: 10 },
{ name: "Monitor", stock: 0 }
];
let index = products.findLastIndex(product => product.stock === 0);
console.log(index);
Enter fullscreen mode Exit fullscreen mode
Output
3
Enter fullscreen mode Exit fullscreen mode
Time Complexity
O(n)
Summary Comparison
Method Returns Search Direction Callback Required Modifies ArrayindexOf()
First matching index
Left → Right
❌
❌
lastIndexOf()
Last matching index
Right → Left
❌
❌
includes()
true / false
Left → Right
❌
❌
find()
First matching element
Left → Right
✅
❌
findIndex()
First matching index
Left → Right
✅
❌
findLast()
Last matching element
Right → Left
✅
❌
findLastIndex()
Last matching index
Right → Left
✅
❌
Tips
- Use
includes()when you only need to check if a value exists. - Use
indexOf()orlastIndexOf()when you need the position of a primitive value. - Use
find()orfindIndex()for arrays of objects or custom conditions. - Use
findLast()andfindLastIndex()(ES2023) when you need to search from the end without reversing the array. - Remember that
indexOf()andincludes()use strict equality (===) for comparison, so searching for objects compares references, not object contents.
References:
https://www.w3schools.com/js/js_array_search.asp
답글 남기기