TL;DR
Array.prototype.zip = function(...args) {
const new_array = [];
for(let i = 0; i < this.length; i ++) {
new_array.push([this[i], ...args.map(arg => arg[i])]);
}
return new_array;
}
詳細
やっていることは単純で同じインデックスの値同士の組み合わせを作って新しい配列に push しているだけですね。もともとは Ruby の Array#zip のようなことを JavaScript でもできないかなと思って探していたんですが、どうやらネイティブでは実装されていないようなので今回作ってみた次第です。
実際に使ってみるとこんな感じになります。
const array0 = [0, 1, 2];
const array1 = [3, 4, 5];
const array2 = [6, 7, 8];
array0.zip(array1, array2) // => [[ 0, 3, 6 ], [ 1, 4, 7 ], [ 2, 5, 8 ]]