Posts 配列からHashを作る
Post
Cancel

配列からHashを作る

ハッシュの作り方のうち、配列からハッシュを作るチップです。

チップ

キーの配列 keys=[“key1”, “key2”, “key3”] と値の配列 values=[“value1”, “value2”, “value3”] からハッシュ {“key1”=>”value1”, “key2”=>”value2”, “key3”=>”value3”} を作ります。

1
Hash[[keys, values].transpose]

解説

1
2
3
4
5
t = [["key1", "key2", "key3"], ["value1", "value2", "value3"]].transpose
h = Hash[t]

puts t.inspect
puts h.inspect

1行目 [[key1, key2, key3], [value1, value2, value3]] を行列とみて転置(transposed)します。 ※ 「行列とみる」のは内部的な処理を数学的な言葉で比喩として表しているだけです。

.transposeがすることを、行列として視覚的に表してみます。「転置」とは、行列の列と行を入れ替え、左側から縦1列目を1行目に、2列目を2行目にそして3列目を3行目になるように回転して置き換えることです。

1
2
3
4
[
    "key1"  , "key2"  , "key3"
    "value1", "value2", "value3"
]

転置して =>

1
2
3
4
5
[
    "key1", "value1"
    "key2", "value2"
    "key3", "value3"
]

行列としては、このように変換されたわけです。

変換された結果を、配列の表し方で視覚化します。

1
2
3
4
5
[
    ["key1", "value1"],
    ["key2", "value2"],
    ["key3", "value3"]
]

=>

1
[["key1", "value1"], ["key2", "value2"], ["key3", "value3"]]

となります(実際にこうしているというのではなく、これはイメージです)。

2行目の Hash[t] で 配列の配列をハッシュにします。

>Hash[["key1", "value1"], ["key2", "value2"], ["key3", "value3"]] => {"key1"=>"value1", "key2"=>"value2", "key3"=>"value3"}

これで完成。

シェア
#内容発言者

slice - HashのActiveSupport 拡張

WPScanでWordPressサイトをチェックする

坂井和郎