Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
配列.push / pop / shift / unshift
配列の末尾または先頭に要素を追加・削除するメソッドです。スタックやキューの実装にもよく使われます。
構文
# 末尾に1つ以上の要素を追加します。 配列.push(要素) 配列.push(要素1, 要素2, ...) 配列 << 要素 # push の糖衣構文 # 末尾の要素を取り出して返します。 配列.pop 配列.pop(n) # n個まとめて取り出します。 # 先頭の要素を取り出して返します。 配列.shift 配列.shift(n) # 先頭に1つ以上の要素を追加します。 配列.unshift(要素) 配列.unshift(要素1, 要素2, ...)
メソッド一覧
| メソッド | 概要 |
|---|---|
| push(elem) | 配列の末尾に要素を追加し、配列自身を返します。破壊的メソッドです。 |
| << elem | 『push』と同じ動作をします。チェーンして複数の要素を追加できます(例: 『arr << 1 << 2』)。 |
| pop | 配列の末尾の要素を取り出して返します。配列の長さが1減ります。 |
| pop(n) | 末尾からn個の要素を配列として取り出して返します。 |
| shift | 配列の先頭の要素を取り出して返します。残りの要素は前にずれます。 |
| unshift(elem) | 配列の先頭に要素を追加し、配列自身を返します。 |
サンプルコード
果物 = ["りんご", "バナナ"]
# push で末尾に追加します。
果物.push("みかん")
puts 果物.inspect # ["りんご", "バナナ", "みかん"]
# << でも追加できます(チェーン可能)。
果物 << "ぶどう" << "メロン"
puts 果物.inspect # ["りんご", "バナナ", "みかん", "ぶどう", "メロン"]
# pop で末尾から取り出します。
取り出した = 果物.pop
puts 取り出した # メロン
puts 果物.inspect # ["りんご", "バナナ", "みかん", "ぶどう"]
# shift で先頭から取り出します。
先頭 = 果物.shift
puts 先頭 # りんご
puts 果物.inspect # ["バナナ", "みかん", "ぶどう"]
# unshift で先頭に追加します。
果物.unshift("いちご")
puts 果物.inspect # ["いちご", "バナナ", "みかん", "ぶどう"]
# キュー(FIFO)の実装例です。
待ち行列 = []
待ち行列.push("Aさん")
待ち行列.push("Bさん")
待ち行列.push("Cさん")
puts 待ち行列.shift # Aさん(先に入れた人が先に出る)
puts 待ち行列.shift # Bさん
概要
これらのメソッドはすべて元の配列を直接変更する破壊的メソッドです。『push / pop』の組み合わせでスタック(LIFO)を、『push / shift』の組み合わせでキュー(FIFO)を実装できます。
『<<』演算子は最もよく使われる配列追加の記法で、メソッドチェーンで複数の要素を続けて追加できます。空の配列から『pop』や『shift』を呼び出すと、例外ではなく『nil』が返ります。空配列チェックが必要な場合は事前に『empty?』で確認してください。
任意の位置に挿入・削除するには『insert / delete』を、要素の存在確認には『include?』を使用してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。