Tanaka on Rails

行動・努力・俯瞰

2つの配列をindexを基準に合成する方法

単純に配列の後ろに追加する場合

例えば...

array_a = [ "a", "b", "c", "d" ]
array_b = [ 1, 2, 3, 4 ]

という2つの配列があるとします。

単純に後ろに繋ぎたい場合は...

array_a.push(array_b)
=>  [ "a", "b", "c", "d", [ 1, 2, 3, 4 ] ]
#pushだけだと連想配列になるので注意
  
array_a.flatten!
p array_a
=> [ "a", "b", "c", "d", 1, 2, 3, 4 ]

とすればOKです。

2つの配列をindexを基準に合成する場合

上記のケースでいった場合は

[ [ "a", 1 ], [ "b", 2 ], [ "c", 3 ], ["d", 4 ] ]

という感じで配列ごとのindexを基準に新しい配列を作成したい場合はどうすればいいのでしょうか?

そんな時はzipを使えば良いです!

array_a.zip(array_b)
=> [ [ "a", 1 ], [ "b", 2 ], [ "c", 3 ], ["d", 4 ] ]

あまり使用することのないケースだと思いますが覚えておくと便利かも?

参考

qiita.com

qiita.com