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));