Skip to content

Instantly share code, notes, and snippets.

@indongyoo
Created December 26, 2018 08:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save indongyoo/0104962e0b3340de5440f232e9d08f8a to your computer and use it in GitHub Desktop.
Save indongyoo/0104962e0b3340de5440f232e9d08f8a to your computer and use it in GitHub Desktop.
const isIterable = a => !!(a && a[Symbol.iterator]);
function *flat(iter) {
for (const a of iter) {
if (isIterable(a)) yield *a;
else yield a;
}
}
function *deepFlat(iter) {
for (const a of iter) {
if (isIterable(a)) yield *deepFlat(a);
else yield a;
}
}
log([...flat([1, [2], [3, [4]], [[[5], 6]]])]);
// [1, 2, 3, [4], [[5], 6]];
log([...deepFlat([1, [2], [3, [4]], [[[5], 6]]])]);
// [1, 2, 3, 4, 5, 6];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment