astris.design

[JS]配列の追加削除メソッド pop, push, shift, unshift

JavaScriptのArrayオブジェクトの追加削除メソッドには、pop、push、shift、unshiftがあります。それぞれの使い方と、スタックとキューを実装する方法について、解説します(サンプルあり)。

【目次・配列の追加削除メソッド】

pop:配列末尾の要素を削除

popメソッドは、配列末尾の要素を一つ削除します。
メソッドを呼び出した配列そのものを、加工します。
戻り値は、削除した要素です。

pop.js
const array = ['Cupcake', 'Donut', 'Eclair', 'Froyo', 'Gingerbread'];
console.log(array.pop());
//「Gingerbread」
console.log(array);
//「[ 'Cupcake', 'Donut', 'Eclair', 'Froyo' ]」

push:配列末尾に要素を追加

pushメソッドは、配列末尾に要素を追加します。一度に複数の要素を追加することもできます。
メソッドを呼び出した配列そのものを、加工します。
戻り値は、要素追加後の配列の要素数です。

pushメソッドの引数として配列を渡しても展開されることはなく、配列のまま一つの要素として追加されます。
配列の要素を展開して追加する場合は、スプレッド演算子(...)を使用する必要があります。
また、配列同士を結合して新たな配列を生成する場合は、concatメソッドを使用します。

push.js
const array = ['Cupcake', 'Donut'];
console.log(array.push('Eclair'));
//「3」
console.log(array);
//「[ 'Cupcake', 'Donut', 'Eclair' ]」
console.log(array.push('Froyo', 'Gingerbread'));
//「5」
console.log(array);
//「[ 'Cupcake', 'Donut', 'Eclair', 'Froyo', 'Gingerbread' ]」

shift:配列先頭の要素を削除

shiftメソッドは、配列先頭の要素を一つ削除します。
メソッドを呼び出した配列そのものを、加工します。
戻り値は、削除した要素です。

shift.js
const array = ['Cupcake', 'Donut', 'Eclair', 'Froyo', 'Gingerbread'];
console.log(array.shift());
//「Cupcake」
console.log(array);
//「[ 'Donut', 'Eclair', 'Froyo', 'Gingerbread' ]」

unshift:配列先頭に要素を追加

unshiftメソッドは、配列末尾に要素を追加します。一度に複数の要素を追加することもできます。
メソッドを呼び出した配列そのものを、加工します。
戻り値は、要素追加後の配列の要素数です。

unshift.js
const array = ['Froyo', 'Gingerbread'];
console.log(array.unshift('Eclair'));
//「3」
console.log(array);
//「[ 'Eclair', 'Froyo', 'Gingerbread' ]」
console.log(array.unshift('Cupcake', 'Donut'));
//「5」
console.log(array);
//「[ 'Cupcake', 'Donut', 'Eclair', 'Froyo', 'Gingerbread' ]」

スタック:push / pop

スタック(stack)とは、後入れ先出し方式(LIFO:Last In, First Out)で、データを管理するものです。
データを後ろから追加していき、後ろからデータを取り出して処理を実行します。
例えば、アプリの操作を取り消すUndo機能は、スタックで実装することができます。
スタックは、pushメソッド(配列末尾に要素を追加)とpopメソッド(配列末尾の要素を取得して削除)で実装します。

stack.js
const stack = ['action1', 'action2', 'action3', 'action4'];
stack.push('action5');
let last = stack.pop();
console.log(`Undo ${last}`);
//「Undo action5」
console.log(stack);
//「[ 'action1', 'action2', 'action3', 'action4' ]」

キュー:push / shift

キュー(queue)とは、先入れ先出し方式(FIFO:First In, First Out)で、データを管理するものです。
データを後ろから追加していき、前からデータを取り出して処理を実行します。
待ち行列となる処理を実装することができます。
キューは、pushメソッド(配列末尾に要素を追加)とshiftメソッド(配列先頭の要素を取得して削除)で実装します。

queue.js
const queue = ['process1', 'process2', 'process3', 'process4'];
queue.push('process5');
let current = queue.shift();
console.log(`Do ${current}`);
//「Do process1」
console.log(queue);
//「[ 'process2', 'process3', 'process4', 'process5' ]」

まとめ

JavaScriptの配列の追加削除メソッドについて、解説しました。
配列要素の追加削除メソッドには、pop、push、shift、unshiftがあります。

  • pop:末尾削除
  • push:末尾追加
  • shift:先頭削除
  • unshift:先頭追加

また、スタックとキューのデータ構造を、配列で実装することができます。
スタックとキューは以下の組み合わせで実装します。

  • スタック:push / pop
  • キュー:push / shift