定義と使用方
shift()関数は配列の最初の要素を削除します。
特徴
- 元の配列自体を直接変更します。
- この操作によって配列の長さが1つ減ります。
- 削除された要素を返します。
基本の例
const arr = [1, 2, 3];
// 配列の先頭から最初の要素を削除します。
arr.shift();
console.log(arr); // 出力: [2, 3]
pop()関数はこれと似ていますが、配列の最後の要素を削除します。
構文
arr.shift()
arrはshift()関数を適用する配列です。
パラメーター
なし。
戻り値
shift()関数は、配列から削除された最初の要素の値を返します。shift()関数で削除する最初の要素が存在せず、配列が空の場合はundefinedが返されます。
shift()関数の戻り値
const arr = [1, 2, 3];
// 配列の先頭(最初の値)から1つの要素を削除します。
const removedItem = arr.shift();
console.log(arr); // 出力: [2, 3]
console.log(removedItem); // 出力: 1
// 配列が空の場合
const emptyArray = [];
const emptyArrayRemovedItem = emptyArray.shift(); // 削除する最初の要素が存在せず、配列が空
console.log(emptyArrayRemovedItem); // 出力: undefined
注意すべき点とさまざまな状況
shift()関数を使用する際に重要な概念と注意点がいくつかあります。
- 戻り値
- 元の配列の変更と配列の長さ
delete演算子で配列の最初の要素を削除する- 繰り返し処理と一緒に使用して配列をフィルタリング
戻り値
shift()関数は削除した要素を返します。返された値は変数に保存することができます。
const fruits = ["apple", "banana", "cherry"];
const removedFruit = fruits.shift();
console.log(removedFruit); // 出力: "apple"
元の配列の変更と配列の長さ
shift()関数は元の配列を変更します。したがって、配列から要素を削除すると配列が変更され、配列の長さが減ることを理解しておく必要があります。
const fruits = ["apple", "banana", "cherry"];
const removedFruit = fruits.shift();
console.log(fruits.length); // 出力: 2
コード補足説明
配列のlengthプロパティは、配列に含まれる要素の数を数値で返します。
delete演算子で配列の最初の要素を削除する
shift()関数の代わりにdelete演算子を使用して配列の最初の要素を削除すると、その要素の値は配列から削除されずに空のままになります。配列の長さも変更されません。
const fruits = ["apple", "banana", "cherry"];
// 配列の最初の要素を削除
delete fruits[0];
// 配列を出力
console.log(fruits); // 出力: [<空>, "banana", "cherry"]
console.log(fruits[0]); // 出力: undefined
配列の最初の要素を削除するためにdelete演算子を使用しない方が良いです。
繰り返し処理と一緒に使用して配列をフィルタリング
shift()関数は、繰り返し処理と組み合わせて配列をフィルタリングしたり、配列の要素を順次処理したりする際に便利なツールの一つです。
以下の例では、配列から正の値のみを抽出して表示します。
const numbers = [3, -2, 8, -5, 7, -1, 6];
const positiveNumbers = [];
while ((number = numbers.shift()) !== undefined) {
if (number > 0) {
positiveNumbers[positiveNumbers.length] = number; // 正の値のみ抽出して新しい配列に追加
}
}
console.log(positiveNumbers); // 出力: [3, 8, 7, 6]
コード補足説明while文は、条件式が真(true)である間、コードブロックを繰り返し実行する繰り返し文です。
仕様書
| 仕様書 | |
|---|---|
shift()
|
ECMAScript Language Specification #sec-array.prototype.shift |
ブラウザ互換性
| メソッド |
デスクトップ Chrome
|
デスクトップデスクトップ Edge
|
デスクトップ Firefox
|
Safari
|
Node.js
|
|---|---|---|---|---|---|
shift()
|
1 | 12 | 1 | 1 | 0.10 |