899 B
899 B
title, tags, expertise, cover, firstSeen, lastUpdated
| title | tags | expertise | cover | firstSeen | lastUpdated |
|---|---|---|---|---|---|
| Ungroup array elements | array | intermediate | blog_images/glass-blowing.jpg | 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]]