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.

shift()Array インスタンスのメソッドで、配列から最初の要素を取り除き、その要素を返します。このメソッドは配列の長さを変えます。

試してみましょう

const array1 = [1, 2, 3]; const firstElement = array1.shift(); console.log(array1); // Expected output: Array [2, 3] console.log(firstElement); // Expected output: 1 

構文

js
shift() 

引数

なし。

返値

配列から取り除かれた要素を返します。配列が空の場合は、undefined を返します。

解説

shift() メソッドは 0 番目の位置の要素を取り除き、続く位置の値を小さい方向にずらします。 そして、削除された値を返します。length プロパティが 0 の場合、undefined を返します。

pop() メソッドは shift() と似た動作をしますが、こちらは配列の末尾の要素に適用されます。

shift() メソッドは変更メソッドです。長さと this の内容を変更します。 this の値を変化させず、最初の要素を取り除いた新しい配列を返したい場合は、代わりに arr.slice(1) を使用することができます。

shift() メソッドは汎用的です。これは this 値に length プロパティと整数キーのプロパティがあることだけを期待します。文字列も配列風ですが、文字列は不変であるため、このメソッドを適用するのは適切ではありません。

配列から要素を除去

以下のコードは myFish 配列を、その最初の要素を取り除く前後で表示します。また、取り除いた要素も表示します。

js
const myFish = ["angel", "clown", "mandarin", "surgeon"]; console.log("myFish 処理前:", myFish); // myFish 処理前: ['angel', 'clown', 'mandarin', 'surgeon'] const shifted = myFish.shift(); console.log("myFish 処理後:", myFish); // myFish 処理後: ['clown', 'mandarin', 'surgeon'] console.log("取り除いた要素:", shifted); // 取り除いた要素: angel 

shift() メソッドの while ループ内での使用

shift() メソッドは時に、 while 文の条件内において用いられます。以下のコードでは、要素がすべて無くなるまで、反復処理のたびにその配列内の次の要素を取り除きます。

js
const names = ["Andrew", "Tyrone", "Paul", "Maria", "Gayatri"]; while (typeof (i = names.shift()) !== "undefined") { console.log(i); } // Andrew, Tyrone, Paul, Maria, Gayatri 

配列以外のオブジェクトに対する shift() の呼び出し

shift() メソッドは thislength プロパティを読み込みます。正規化された長さが 0 の場合、length は再び 0 に設定されます(以前は負の値または undefined であった可能性があります)。そうでない場合は、 0 のプロパティを返し、残りのプロパティは左に 1 つシフトされます。 length プロパティは 1 つデクリメントされます。

js
const arrayLike = { length: 3, unrelated: "foo", 2: 4, }; console.log(Array.prototype.shift.call(arrayLike)); // undefined。空のスロットであるため console.log(arrayLike); // { '1': 4, length: 2, unrelated: 'foo' } const plainObj = {}; // length プロパティがないため、 length は 0 Array.prototype.shift.call(plainObj); console.log(plainObj); // { length: 0 } 

仕様書

Specification
ECMAScript® 2026 Language Specification
# sec-array.prototype.shift

ブラウザーの互換性

関連情報