Array.prototype.shift()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Theshift() method ofArray instances removes thefirstelement from an array and returns that removed element. This method changes the lengthof the array.
In this article
Try it
const array = [1, 2, 3];const firstElement = array.shift();console.log(array);// Expected output: Array [2, 3]console.log(firstElement);// Expected output: 1Syntax
shift()Parameters
None.
Return value
The removed element from the array;undefined if the array is empty.
Description
Theshift() method shifts all values to the left by 1 and decrements the length by 1, resulting in the first element being removed. If thelength property is 0,undefined is returned.
Thepop() method has similar behavior toshift(), but applied to the last element in an array.
Theshift() method is amutating method. It changes the length and the content ofthis. In case you want the value ofthis to be the same, but return a new array with the first element removed, you can usearr.slice(1) instead.
Theshift() method isgeneric. It only expects thethis value to have alength property and integer-keyed properties. Although strings are also array-like, this method is not suitable to be applied on them, as strings are immutable.
Examples
>Removing an element from an array
The following code displays themyFish array before and after removing itsfirst element. It also displays the removed element:
const myFish = ["angel", "clown", "mandarin", "surgeon"];console.log("myFish before:", myFish);// myFish before: ['angel', 'clown', 'mandarin', 'surgeon']const shifted = myFish.shift();console.log("myFish after:", myFish);// myFish after: ['clown', 'mandarin', 'surgeon']console.log("Removed this element:", shifted);// Removed this element: angelUsing shift() method in while loop
The shift() method is often used in condition inside while loop. In the followingexample every iteration will remove the next element from an array, until it is empty:
const names = ["Andrew", "Tyrone", "Paul", "Maria", "Gayatri"];while (typeof (i = names.shift()) !== "undefined") { console.log(i);}// Andrew, Tyrone, Paul, Maria, GayatriCalling shift() on non-array objects
Theshift() method reads thelength property ofthis. If thenormalized length is 0,length is set to0 again (whereas it may be negative orundefined before). Otherwise, the property at0 is returned, and the rest of the properties are shifted left by one. The property atlength - 1 isdeleted, and thelength property is decremented by one.
const arrayLike = { length: 3, unrelated: "foo", 2: 4,};console.log(Array.prototype.shift.call(arrayLike));// undefined, because it is an empty slotconsole.log(arrayLike);// { '1': 4, length: 2, unrelated: 'foo' }const plainObj = {};// There's no length property, so the length is 0Array.prototype.shift.call(plainObj);console.log(plainObj);// { length: 0 }Specifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-array.prototype.shift> |