860 B
860 B
title, type, language, tags, cover, dateModified
| title | type | language | tags | cover | dateModified | |
|---|---|---|---|---|---|---|
| Ungroup array elements | snippet | javascript |
|
glass-blowing | 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]]