JAVASCRIPT

JavaScript Array shift: Syntax, Usage, and Examples

The shift() method in JavaScript removes the first element from an array and returns that element. It mutates the original array, shifting all remaining elements one position to the left. The JavaScript array shift operation is commonly used when treating arrays like queues, where the first element in is the first one out (FIFO).

Whether you’re managing tasks, processing inputs, or simplifying list-based logic, knowing how to use array shift JavaScript functions helps keep your code efficient and readable.

How to Use JavaScript Array shift

Here’s the basic syntax:

array.shift()
  • It removes the first element of the array.
  • It returns the removed element.
  • It modifies the original array.

Basic Example

let colors = ["red", "green", "blue"];
let firstColor = colors.shift();

console.log(firstColor); // "red"
console.log(colors);     // ["green", "blue"]

As you can see, the method removes "red" and shifts the other values forward.

When to Use the Array shift JavaScript Method

Working with Queues

A common use case is when you need to process items in the order they arrive.

let tasks = ["clean", "write", "email"];
let nextTask = tasks.shift();

console.log(nextTask); // "clean"

Iterating Through Items One by One

You can loop through a list and remove elements as you go:

let queue = ["user1", "user2", "user3"];

while (queue.length > 0) {
  let user = queue.shift();
  console.log("Processing", user);
}

This is useful in simulations, messaging systems, and pipelines.

Removing Oldest Elements

If you’re tracking the oldest record and only care about the most recent entries, you might use shift to discard old data:

let logs = ["log1", "log2", "log3"];
logs.shift(); // remove oldest log

console.log(logs); // ["log2", "log3"]

Examples of JavaScript Array shift in Practice

Simple Shift

let letters = ["a", "b", "c"];
let removed = letters.shift();

console.log(removed); // "a"
console.log(letters); // ["b", "c"]

Handling Empty Arrays

If you use shift on an empty array, it returns undefined:

let empty = [];
let result = empty.shift();

console.log(result); // undefined

This makes it safe to call shift even if you’re unsure whether the array has elements.

shift with array of objects

let messages = [
  { id: 1, text: "Hello" },
  { id: 2, text: "How are you?" }
];

let firstMessage = messages.shift();

console.log(firstMessage); // { id: 1, text: "Hello" }
console.log(messages);     // [{ id: 2, text: "How are you?" }]

It’s especially useful when managing ordered collections of data.

Learn More About JavaScript Array shift

Difference Between shift() and pop()

  • shift() removes the first element.
  • pop() removes the last element.

let items = [1, 2, 3];
items.shift(); // [2, 3]
items.pop();   // [2]

Use shift() when you want to treat arrays like queues (FIFO). Use pop() for stack behavior (LIFO).

Performance Considerations

While shift() is convenient, it’s slower on large arrays. That’s because every item in the array must move one index to the left.

let bigArray = Array(1000000).fill("item");
bigArray.shift(); // Expensive operation

If performance is critical, consider using a custom queue structure instead of repeatedly shifting large arrays.

Using shift in Functional Patterns

Although shift() mutates the array, you can combine it with slice() to get similar effects non-destructively:

let numbers = [10, 20, 30];
let [first, ...rest] = numbers;

console.log(first); // 10
console.log(rest);  // [20, 30]

This destructuring pattern achieves the same result without modifying the original array.

shift and Loops

let playlist = ["Track 1", "Track 2", "Track 3"];

while (playlist.length) {
  let song = playlist.shift();
  console.log("Now playing:", song);
}

This pattern ensures the array shrinks each time, ending the loop when all elements are processed.

shift and Asynchronous Processing

If you’re managing tasks asynchronously, shift() can help:

let uploads = ["file1", "file2", "file3"];

function processNext() {
  let file = uploads.shift();
  if (file) {
    console.log("Uploading", file);
    setTimeout(processNext, 1000);
  }
}

processNext();

This allows sequential processing with simple, readable logic.

shift with Conditionals

let queue = ["job1", "job2"];

if (queue.length > 0) {
  let current = queue.shift();
  console.log("Handling", current);
} else {
  console.log("Queue is empty");
}

Always checking array length before using shift() prevents unnecessary errors or undefined values.

Create a History Log with shift and push

Keep a limited-length history by removing the oldest entry when new ones are added:

let history = [];

function addAction(action) {
  if (history.length >= 5) {
    history.shift(); // remove oldest
  }
  history.push(action);
}

addAction("Login");
addAction("Navigate");
addAction("Click");
addAction("Logout");
addAction("Login again");
addAction("Error"); // "Login" is removed

console.log(history); // Last 5 actions only

This is a basic form of a rolling window.

The JavaScript array shift method is a powerful tool when working with lists, queues, and ordered data. It allows you to remove and handle the first element with a single call while updating the array in place. Whether you’re processing tasks, managing streams, or tracking logs, mastering how to use array shift JavaScript operations gives you more control over how data flows through your program.

Learn to Code in JavaScript for Free
Start learning now
button icon
To advance beyond this tutorial and learn JavaScript by doing, try the interactive experience of Mimo. Whether you're starting from scratch or brushing up your coding skills, Mimo helps you take your coding journey above and beyond.

Sign up or download Mimo from the App Store or Google Play to enhance your programming skills and prepare for a career in tech.

You can code, too.

© 2025 Mimo GmbH