This function ‘zips’ multiple arrays, merging them into one array of tuples, where the first element of each input array is paired with the first element of the other input arrays, and so on.
JavaScript:
let zip = (...arrays) => arrays[0].map((_,i) => arrays.map(array => array[i]));
// Example
console.log(zip(['a', 'b', 'c'], [1, 2, 3], [true, false, true])); // [['a', 1, true], ['b', 2, false], ['c', 3, true]]
console.log(zip(['John', 'Jane'], [23, 21], ['Male', 'Female'])); // [['John', 23, 'Male'], ['Jane', 21, 'Female']]
TypeScript:
let zip = (...arrays: T[][]): T[][] => arrays[0].map((_,i) => arrays.map(array => array[i]));
// Example
console.log(zip(['a', 'b', 'c'], [1, 2, 3], [true, false, true])); // [['a', 1, true], ['b', 2, false], ['c', 3, true]]
console.log(zip(['John', 'Jane'], [23, 21], ['Male', 'Female'])); // [['John', 23, 'Male'], ['Jane', 21, 'Female']]