| var _curry1 = |
| /*#__PURE__*/ |
| require("./internal/_curry1"); |
| /** |
| * Transposes the rows and columns of a 2D list. |
| * When passed a list of `n` lists of length `x`, |
| * returns a list of `x` lists of length `n`. |
| * |
| * |
| * @func |
| * @memberOf R |
| * @since v0.19.0 |
| * @category List |
| * @sig [[a]] -> [[a]] |
| * @param {Array} list A 2D list |
| * @return {Array} A 2D list |
| * @example |
| * |
| * R.transpose([[1, 'a'], [2, 'b'], [3, 'c']]) //=> [[1, 2, 3], ['a', 'b', 'c']] |
| * R.transpose([[1, 2, 3], ['a', 'b', 'c']]) //=> [[1, 'a'], [2, 'b'], [3, 'c']] |
| * |
| * // If some of the rows are shorter than the following rows, their elements are skipped: |
| * R.transpose([[10, 11], [20], [], [30, 31, 32]]) //=> [[10, 20, 30], [11, 31], [32]] |
| * @symb R.transpose([[a], [b], [c]]) = [a, b, c] |
| * @symb R.transpose([[a, b], [c, d]]) = [[a, c], [b, d]] |
| * @symb R.transpose([[a, b], [c]]) = [[a, c], [b]] |
| */ |
| |
| |
| var transpose = |
| /*#__PURE__*/ |
| _curry1(function transpose(outerlist) { |
| var i = 0; |
| var result = []; |
| |
| while (i < outerlist.length) { |
| var innerlist = outerlist[i]; |
| var j = 0; |
| |
| while (j < innerlist.length) { |
| if (typeof result[j] === 'undefined') { |
| result[j] = []; |
| } |
| |
| result[j].push(innerlist[j]); |
| j += 1; |
| } |
| |
| i += 1; |
| } |
| |
| return result; |
| }); |
| |
| module.exports = transpose; |