Skip to main content

Command Palette

Search for a command to run...

JavaScript Array Methods

Updated
5 min readView as Markdown
JavaScript Array Methods

push, pop, shift, unshift, map, filter, reduce, forEach

This article is for complete beginners. You can follow along by opening your browser console (Right-click → Inspect → Console tab) and typing the examples.

1. push() and pop() – Working with the END of an array

push() – Add to the end

Idea: Put a new item at the end of the list.

let fruits = ["apple", "banana"];
console.log(fruits); // ["apple", "banana"]

fruits.push("mango");

console.log(fruits); // ["apple", "banana", "mango"]
  • Before: ["apple", "banana"]

  • After push("mango"): ["apple", "banana", "mango"]

pop() – Remove from the end

Idea: Take the last item out of the list.

let fruits = ["apple", "banana", "mango"];
console.log(fruits); // ["apple", "banana", "mango"]

let lastFruit = fruits.pop();

console.log(lastFruit); // "mango"
console.log(fruits);    // ["apple", "banana"]
  • Before: ["apple", "banana", "mango"]

  • After pop(): ["apple", "banana"]

2. shift() and unshift() – Working with the START of an array

unshift() – Add to the start

let numbers = [2, 3, 4];
console.log(numbers); // [2, 3, 4]

numbers.unshift(1);

console.log(numbers); // [1, 2, 3, 4]

shift() – Remove from the start

let numbers = [1, 2, 3, 4];
console.log(numbers); // [1, 2, 3, 4]

let firstNumber = numbers.shift();

console.log(firstNumber); // 1
console.log(numbers);     // [2, 3, 4]
  • Before: [1, 2, 3, 4]

  • After shift(): [2, 3, 4]

3. for loop vs map() / filter() / forEach()

Traditional for loop example

Goal: Create a new array with each number doubled.

let nums = [1, 2, 3];
let doubled = [];

for (let i = 0; i < nums.length; i++) {
  doubled.push(nums[i] * 2);
}

console.log(doubled); // [2, 4, 6]

This works, but we manually manage i, length, and push.

4. map() – Transform each item

Idea: Take an array, apply a function to every item, and get a new array.

let nums = [1, 2, 3];
console.log("before:", nums); // [1, 2, 3]

let doubled = nums.map(function (num) {
  return num * 2;
});

console.log("after (new array):", doubled); // [2, 4, 6]
console.log("original:", nums);             // [1, 2, 3]
  • Before: [1, 2, 3]

  • After map(num => num * 2): [2, 4, 6]

  • Original array stays the same

Simple map “flowchart” (mental model)

  1. Take first value → run function → put result in new array

  2. Move to next value → repeat

  3. Stop when no more values → return new array

5. filter() – Keep only what you want

Idea: Test each item; if the test is true, keep it. The result is a new array.

let nums = [5, 10, 15, 20];
console.log("before:", nums); // [5, 10, 15, 20]

let greaterThan10 = nums.filter(function (num) {
  return num > 10;
});

console.log("after (filtered):", greaterThan10); // [15, 20]
console.log("original:", nums);                  // [5, 10, 15, 20]
  • Before: [5, 10, 15, 20]

  • After filter(num > 10): [15, 20]

  • Original stays the same

Simple filter “flowchart” (mental model)

For every item:

  1. Run the test (condition)

  2. If the condition is true, → item goes into the new array

  3. If the condition is false → ignore that item

  4. Return the new array at the end

6. reduce() – Combine all values into one

Idea: Go through the array and keep an “accumulator” (a running total or result). At the end, you get one value.

Example: sum of all numbers.

let nums = [1, 2, 3, 4];

let sum = nums.reduce(function (accumulator, currentValue) {
  return accumulator + currentValue;
}, 0);

console.log(sum); // 10
  • accumulator: starts at 0 (the second argument to reduce)

  • Step-by-step:

    • Start: accumulator = 0

    • Step 1: 0 + 1 = 1

    • Step 2: 1 + 2 = 3

    • Step 3: 3 + 3 = 6

    • Step 4: 6 + 4 = 10 → final result

Simply reduce “visual.”

Think of reduce like this line:

0 → (add 1) → 1 → (add 2) → 3 → (add 3) → 6 → (add 4) → 10

You pass through all values and keep updating a single result.

7. forEach() – Do something for each item (no new array)

Idea: Loop over each item and run a function. Does not return a new array.

let fruits = ["apple", "banana", "mango"];

fruits.forEach(function (fruit, index) {
  console.log(index, fruit);
});

// 0 "apple"
// 1 "banana"
// 2 "mango"

Use forEach when you just want to do something (like console.log) for each item, not create a new array.

8. Common beginner mistakes (and how to avoid them)

  • Confusing map and forEach:

    • map Returns a new array.

    • forEach returns undefined (it’s just for side effects).

  • Expecting filter to change the original array:

    • It doesn’t. It returns a new array. Always store the result.
  • Forgetting the initial value in reduce:

    • As a beginner, always pass an initial value like 0 for sums.

9. Your practice assignment

Try these directly in the browser console.

  1. Create an array of numbers
let numbers = [3, 7, 12, 5, 20];
  1. Use map() to double each number
let doubled = numbers.map(function (num) {
  return num * 2;
});

console.log(doubled);
  1. Use filter() to get numbers greater than 10
let greaterThan10 = numbers.filter(function (num) {
  return num > 10;
});

console.log(greaterThan10);
  1. Use reduce() to calculate the total sum
let total = numbers.reduce(function (acc, num) {
  return acc + num;
}, 0);

console.log(total);
  • Type all code yourself (don’t just copy-paste) to build muscle memory.

  • Change the numbers and see what happens to the results.

  • Once you’re comfortable, try replacing the function (num) { ... } with arrow functions like num => num * 2.

You can now explain these array methods to someone else—that’s a great sign you understand them.

Happy learning!