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

indexOf() lastIndexOf() findIndex()

Existence Methods

Check if elements exist

includes() some() every()
🎯

Element Methods

Get the actual elements

find() filter()
🔢

Advanced Search

Complex search conditions

Custom functions Regular expressions

🔹 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"]

🧠 Test Your Knowledge

Which method returns true if an element exists in an array?