JavaScript, Python, Ruby で多次元配列を zip で作ってループする場合のメモ

More than 1 year has passed since last update.

JavaScript での書き方がぱっと思い浮かばなかったのでメモしておきます。


JavaScript

forEach ので 分割代入 を使うことで複数の引数を取得できる。

// Python の zip や Ruby の Array#zip に相当する関数を作る。

const zip = (array1, array2) => array1.map((_, i) => [array1[i], array2[i]]);
zip([101, 102, 103], ['ヒロ', '沙英', '乃莉']);
//=> [[101, "ヒロ"], [102, "沙英"], [103, "乃莉"]]

zip([101, 102, 103], ['ヒロ', '沙英', '乃莉'])
.forEach(([room, girl]) => console.log(`部屋 ${room} には${girl}が住んでいます。`));

部屋 101 にはヒロが住んでいます。

部屋 102 には沙英が住んでいます。
部屋 103 には乃莉が住んでいます。

ちなみに Python と Ruby では次のように書けます。


Python

>>> list(zip([101, 102, 103], ['ヒロ', '沙英', '乃莉']))

[(101, 'ヒロ'), (102, '沙英'), (103, '乃莉')]

>>> for room, girl in zip([101, 102, 103], ['ヒロ', '沙英', '乃莉']):
... print(f'部屋 {room} には{girl}が住んでいます。')
...
部屋 101 にはヒロが住んでいます。
部屋 102 には沙英が住んでいます。
部屋 103 には乃莉が住んでいます。


Ruby

irb(main):001:0> [101, 102, 103].zip(['ヒロ', '沙英', '乃莉'])

=> [[101, "ヒロ"], [102, "沙英"], [103, "乃莉"]]

irb(main):002:0> [101, 102, 103].zip(['ヒロ', '沙英', '乃莉']) { |room, girl| puts("部屋 #{room} には#{girl}が住んでいます。") }
部屋 101 にはヒロが住んでいます。
部屋 102 には沙英が住んでいます。
部屋 103 には乃莉が住んでいます。