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

Reply via email to