[Ruby]ハッシュ(Hash)の先頭に要素を追加するには?

Ruby

どうも、ちょげ(@chogetarou)です。

ハッシュ(Hash)の先頭に要素を追加する方法を紹介します。

スポンサーリンク

方法

ハッシュ(Hash)の先頭に要素を追加する方法は、2つあります。

mergeメソッド

ひとつは、mergeメソッドを使う方法です。

まず、先頭に追加する要素を保持するハッシュを用意します。

用意したハッシュからmergeメソッドを呼び出します。

そして、mergeメソッドの引数に、追加先のハッシュを指定します。

#hash=対象のハッシュ, newKey=追加する要素のキー, newValue=追加する要素の値
newItem = {newKey => newValue} //追加する要素をまとめたハッシュ
result = newItem.merge(hash)

上記のmergeメソッドは、対象のハッシュ(Hash)の先頭に要素を追加した結果を返します。

使用例

nums = { 
    "one" => 1, 
    "two" => 2,
    "three" => 3,
    "four" => 4,
    "five" => 5,
}

newItem = {"zero" => 0}
result = newItem.merge(nums)

p result
出力:
{"zero"=>0, "one"=>1, "two"=>2, "three"=>3, "four"=>4, "five"=>5}

unshiftメソッド

もうひとつは、unshiftメソッドを使う方法です。

まず、Hash[]を記述します。

[]内で、ハッシュからto_aメソッド、to_aメソッドからunshiftメソッドを呼び出します。

そして、unshiftメソッドの引数に、キーと値をまとめた配列を指定します。

#h=対象のハッシュ, newKey=追加する要素のキー, newValue=追加する要素の値
result = Hash[h.to_a.unshift([newKey, newValue])]

上記のHash[]は、対象のハッシュ(Hash)の先頭に要素を追加した新しいハッシュを生成します。

使用例

nums = { 
    "one" => 1, 
    "two" => 2,
    "three" => 3,
    "four" => 4,
    "five" => 5,
}

result = Hash[nums.to_a.unshift(["zero", 0])]

p result
出力:
{"zero"=>0, "one"=>1, "two"=>2, "three"=>3, "four"=>4, "five"=>5}

まとめ

ハッシュ(Hash)の先頭に要素を追加する方法は、次の2つです。

  • mergeメソッドを使う方法
    newItem = {newKey => newValue}
    result = newItem.merge(hash)
  • unshiftメソッドを使う方法
    result = Hash[h.to_a.unshift([newKey, newValue])]

コメント

タイトルとURLをコピーしました