859 B
859 B
title, tags, cover, firstSeen, lastUpdated
| title | tags | cover | firstSeen | lastUpdated |
|---|---|---|---|---|
| Ungroup array elements | array | glass-blowing | 2018-01-24T12:35:25+02:00 | 2020-10-22T20:24:44+03:00 |
Creates an array of arrays, ungrouping the elements in an array produced by zip.
- Use
Math.max(),Function.prototype.apply()to get the longest subarray in the array,Array.prototype.map()to make each element an array. - Use
Array.prototype.reduce()andArray.prototype.forEach()to map grouped values to individual arrays.
const unzip = arr =>
arr.reduce(
(acc, val) => (val.forEach((v, i) => acc[i].push(v)), acc),
Array.from({
length: Math.max(...arr.map(x => x.length))
}).map(x => [])
);
unzip([['a', 1, true], ['b', 2, false]]); // [['a', 'b'], [1, 2], [true, false]]
unzip([['a', 1, true], ['b', 2]]); // [['a', 'b'], [1, 2], [true]]