どうも、ちょげ(@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])]
コメント