このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
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 インスタンスのメソッドで、配列から最初の要素を取り除き、その要素を返します。このメソッドは配列の長さを変えます。
In this article
試してみましょう
const array = [1, 2, 3];const firstElement = array.shift();console.log(array);// 予想される結果: Array [2, 3]console.log(firstElement);// 予想される結果: 1構文
shift()引数
なし。
返値
配列から取り除かれた要素を返します。配列が空の場合は、undefined を返します。
解説
shift() メソッドは、すべての値を 1 つずつ左にずらし、長さを 1 減算します。その結果、最初の要素が除去されます。length プロパティが 0 の場合、undefined を返します。
pop() メソッドはshift() と似た動作をしますが、こちらは配列の末尾の要素に適用されます。
shift() メソッドは変更メソッドです。長さとthis の内容を変更します。this の値を変化させず、最初の要素を取り除いた新しい配列を返したい場合は、代わりにarr.slice(1) を使用することができます。
shift() メソッドは汎用的です。これはthis 値にlength プロパティと整数キーのプロパティがあることだけを期待します。文字列も配列風ですが、文字列は不変であるため、このメソッドを適用するのは適切ではありません。
例
>配列から要素を除去
以下のコードはmyFish 配列を、その最初の要素を取り除く前後で表示します。また、取り除いた要素も表示します。
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);// 取り除いた要素: angelshift() メソッドの while ループ内での使用
shift() メソッドは時に、 while 文の条件内において用いられます。以下のコードでは、要素がすべて無くなるまで、反復処理のたびにその配列内の次の要素を取り除きます。
const names = ["Andrew", "Tyrone", "Paul", "Maria", "Gayatri"];while (typeof (i = names.shift()) !== "undefined") { console.log(i);}// Andrew, Tyrone, Paul, Maria, Gayatri配列以外のオブジェクトに対する shift() の呼び出し
shift() メソッドはthis のlength プロパティを読み込みます。正規化された長さが 0 の場合、length は再び0 に設定されます(以前は負の値またはundefined であった可能性があります)。そうでない場合は、0 のプロパティを返し、残りのプロパティは左に 1 つシフトされます。length - 1 のプロパティが削除され、length プロパティは 1 つ減算されます。
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 は 0Array.prototype.shift.call(plainObj);console.log(plainObj);// { length: 0 }仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-array.prototype.shift> |