This function ‘unzips’ an array of tuples into multiple arrays, reversing the ‘zip’ operation.
JavaScript:
let unzip = arrays => arrays[0].map((_,i) => arrays.map(array => array[i]));
// Example
console.log(unzip([['a', 1, true], ['b', 2, false], ['c', 3, true]])); // [['a', 'b', 'c'], [1, 2, 3], [true, false, true]]
console.log(unzip([['John', 23, 'Male'], ['Jane', 21, 'Female']])); // [['John', 'Jane'], [23, 21], ['Male', 'Female']]
TypeScript:
let unzip = (arrays: T[][]): T[][] => arrays[0].map((_,i) => arrays.map(array => array[i]));
// Example
console.log(unzip([['a', 1, true], ['b', 2, false], ['c', 3, true]])); // [['a', 'b', 'c'], [1, 2, 3], [true, false, true]]
console.log(unzip([['John', 23, 'Male'], ['Jane', 21, 'Female']])); // [['John', 'Jane'], [23, 21], ['Male', 'Female']]