このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

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 ⁨2015年7月⁩.

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

試してみましょう

const array = [1, 2, 3];

const firstElement = array.shift();

console.log(array);
// 予想される結果: Array [2, 3]

console.log(firstElement);
// 予想される結果: 1

構文

js
shift()

引数

なし。

返値

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

解説

shift() メソッドは、すべての値を 1 つずつ左にずらし、長さを 1 減算します。その結果、最初の要素が除去されます。 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 のプロパティが削除され、 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

ブラウザーの互換性

関連情報