LoginSignup
15
10

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-01-15

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 には乃莉が住んでいます。
15
10
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
10