lib/transpose.js
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.transpose = transpose;
/**
* Transposes the rows and the columns.
*
* @since v0.1.0
* @param {Array} list
* @return {Array}
* @example
* transpose([[1, 2, 3], [4, 5, 6]]) // => [[1, 4], [2, 5], [3, 6]]
*
* transpose([[10, 11], [20], [], [30, 31, 32]]) // => [[10, 20, 30], [11, 31], [32]]
*/
function transpose(list) {
if (list.length === 0) return undefined;
var indices = {};
list.map(function (l) {
return l.reduce(function (obj, current, index) {
if (!(index in indices)) {
indices[index] = [];
}
indices[index].push(current);
return obj;
}, []);
});
return Object.values(indices);
}