You can use yield* here.
On May 8, 2012 4:12 PM, "Axel Rauschmayer" <[email protected]> wrote:
> The following generator produces an iterator for nested arrays. Is this
> the best way to do recursion? Doesn’t seem terribly elegant.
>
> function* iterTree(tree) {
> if (Array.isArray(tree)) {
> // inner node
> for(let i=0; i < tree.length; i++) {
> for(let elem of iterTree(tree[i])) {
> yield elem;
> }
> }
> } else {
> // leaf
> yield tree;
> }
> }
>
> Interaction:
>
> $ let g = iterTree([[0, 1], 2]);
> $ g.next()
> 0
> $ g.next()
> 1
> $ g.next()
> 2
> $ g.next()
> [object StopIteration]
>
> --
> Dr. Axel Rauschmayer
> [email protected]
>
> home: rauschma.de
> twitter: twitter.com/rauschma
> blog: 2ality.com
>
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss