JavaScript Array Search
Find and locate elements in your arrays
🔍 What is Array Search?
Array search methods help you find specific elements in your arrays. You can check if an element exists, find its position, or get the element itself.
let fruits = ["apple", "banana", "orange"];
let position = fruits.indexOf("banana");
console.log(position); // 1
Output:
1
Types of Search Methods
Position Methods
Find the index of elements
Existence Methods
Check if elements exist
Element Methods
Get the actual elements
Advanced Search
Complex search conditions
🔹 Finding Element Position
Methods to find where elements are located in arrays:
let colors = ["red", "blue", "green", "blue", "yellow"];
// indexOf() - Find first occurrence
console.log(colors.indexOf("blue")); // 1
console.log(colors.indexOf("purple")); // -1 (not found)
// lastIndexOf() - Find last occurrence
console.log(colors.lastIndexOf("blue")); // 3
// findIndex() - Find using a condition
let numbers = [10, 20, 30, 40, 50];
let index = numbers.findIndex(num => num > 25);
console.log(index); // 2 (first number > 25 is at index 2)
// findIndex() with objects
let people = [
{name: "John", age: 25},
{name: "Jane", age: 30},
{name: "Bob", age: 35}
];
let personIndex = people.findIndex(person => person.name === "Jane");
console.log(personIndex); // 1
Output:
1
-1
3
2
1
🔹 Checking if Elements Exist
Methods to check if elements are present in arrays:
let fruits = ["apple", "banana", "orange", "grape"];
// includes() - Check if element exists (returns true/false)
console.log(fruits.includes("banana")); // true
console.log(fruits.includes("mango")); // false
// Case-sensitive check
console.log(fruits.includes("Apple")); // false (capital A)
// some() - Check if at least one element passes a test
let numbers = [1, 3, 5, 8, 9];
let hasEvenNumber = numbers.some(num => num % 2 === 0);
console.log(hasEvenNumber); // true (8 is even)
// every() - Check if all elements pass a test
let allPositive = numbers.every(num => num > 0);
console.log(allPositive); // true (all numbers are positive)
let allEven = numbers.every(num => num % 2 === 0);
console.log(allEven); // false (not all numbers are even)
Output:
true
false
false
true
true
false
🔹 Getting Elements
Methods to retrieve actual elements from arrays:
let students = [
{name: "Alice", grade: 85},
{name: "Bob", grade: 92},
{name: "Charlie", grade: 78},
{name: "Diana", grade: 96}
];
// find() - Get first element that matches condition
let topStudent = students.find(student => student.grade > 90);
console.log(topStudent); // {name: "Bob", grade: 92}
// find() returns undefined if nothing found
let failingStudent = students.find(student => student.grade < 60);
console.log(failingStudent); // undefined
// filter() - Get all elements that match condition
let goodStudents = students.filter(student => student.grade >= 85);
console.log(goodStudents);
// [{name: "Alice", grade: 85}, {name: "Bob", grade: 92}, {name: "Diana", grade: 96}]
// Simple array example
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let evenNumbers = numbers.filter(num => num % 2 === 0);
console.log(evenNumbers); // [2, 4, 6, 8, 10]
Output:
{name: "Bob", grade: 92}
undefined
[{name: "Alice", grade: 85}, {name: "Bob", grade: 92}, {name: "Diana", grade: 96}]
[2, 4, 6, 8, 10]
🔹 Advanced Search Techniques
More complex ways to search through arrays:
// Search with multiple conditions
let products = [
{name: "Laptop", price: 999, category: "Electronics"},
{name: "Book", price: 15, category: "Education"},
{name: "Phone", price: 699, category: "Electronics"},
{name: "Pen", price: 2, category: "Office"}
];
// Find cheap electronics
let cheapElectronics = products.filter(product =>
product.category === "Electronics" && product.price < 800
);
console.log(cheapElectronics); // [{name: "Phone", price: 699, category: "Electronics"}]
// Search in strings (case-insensitive)
let names = ["John", "jane", "MIKE", "sarah"];
let searchTerm = "ja";
let matchingNames = names.filter(name =>
name.toLowerCase().includes(searchTerm.toLowerCase())
);
console.log(matchingNames); // ["jane"]
// Search with regular expressions
let emails = ["[email protected]", "[email protected]", "[email protected]"];
let gmailUsers = emails.filter(email => email.includes("@gmail.com"));
console.log(gmailUsers); // ["[email protected]"]
// Custom search function
function searchArray(array, searchValue) {
return array.filter(item =>
String(item).toLowerCase().includes(String(searchValue).toLowerCase())
);
}
let fruits = ["Apple", "Banana", "Orange", "Grape"];
console.log(searchArray(fruits, "ap")); // ["Apple", "Grape"]
Output:
[{name: "Phone", price: 699, category: "Electronics"}]
["jane"]
["[email protected]"]
["Apple", "Grape"]
🔹 Practical Search Examples
Real-world applications of array search methods:
// User management system
let users = [
{id: 1, username: "john_doe", email: "[email protected]", active: true},
{id: 2, username: "jane_smith", email: "[email protected]", active: false},
{id: 3, username: "bob_wilson", email: "[email protected]", active: true}
];
// Find user by ID
function findUserById(id) {
return users.find(user => user.id === id);
}
console.log(findUserById(2)); // {id: 2, username: "jane_smith", ...}
// Check if username is taken
function isUsernameTaken(username) {
return users.some(user => user.username === username);
}
console.log(isUsernameTaken("john_doe")); // true
// Get all active users
let activeUsers = users.filter(user => user.active);
console.log(activeUsers.length); // 2
// Shopping cart search
let cart = ["laptop", "mouse", "keyboard", "monitor"];
// Check if item is in cart
function isInCart(item) {
return cart.includes(item.toLowerCase());
}
console.log(isInCart("Mouse")); // true (case-insensitive)
// Remove item from cart
function removeFromCart(item) {
let index = cart.indexOf(item.toLowerCase());
if (index > -1) {
cart.splice(index, 1);
return true;
}
return false;
}
console.log(removeFromCart("mouse")); // true
console.log(cart); // ["laptop", "keyboard", "monitor"]
Output:
{id: 2, username: "jane_smith", email: "[email protected]", active: false}
true
2
true
true
["laptop", "keyboard", "monitor"]