JSFiddle - React, Tailwind, and code Playground
JavaScript
console.log("ZIPPING");
let first = ["A", "B", "C", "D", "E"];
let second = ["1", "2", "3", "4", "5"];
function forZipped(first, second) {
let zipped = [];
for (let i = 0; i < first.length; i++) {
zipped.push([first[i], second[i]]);
}
return zipped;
}
console.log("Using for: ", forZipped(first, second));
function mapZipped(first,second) {
return first.map((_, idx) => [first[idx], second[idx]]);
}
console.log("Using map: ", mapZipped(first, second));
function recursionZipped(first,second) {
if (first.length === 0) return [];
return [[first[0], second[0]], ...recursionZipped(first.slice(1), second.slice(1))];
}
console.log("Using recursion: ", recursionZipped(first, second));
console.log("UNZIPPING");
let zipped = [["A","1"],["B","2"],["C","3"],["D","4"],["E","5"]];
function forUnzipped(zip) {
let first = [], second = [];
for (let [a, b] of zip) {
first.push(a);
second.push(b);
}
return [first, second];
}
console.log("For unzipped: ", forUnzipped(zipped));
function reduceUnzipped(zip) {
return zip.reduce(([first, second], [a, b]) => [[...first, a], [...second, b]], [[],[]]);
}
console.log("Reduce unzipped: ", reduceUnzipped(zipped));