Home > Net >  use yield inside another yield
use yield inside another yield

Time:10-01

I would like to use generator to print the content of an array, however yield inside another yield is confusing to me

let myArray = ["a", "b", "c"]

function* line(array){
  yield "my array"
  array.forEach(function*(v){yield v})
}

console.log(Array.from(line(myArray)))

is there a way to print the "a", "b" and "c" each in a new line with the code above?

expected output

my array
a
b
c

CodePudding user response:

Being explicit, with a visible inner for(of):

let myArray = ["a", "b", "c"]

function* line(array) {
  yield "my array";

  for( const ch of array ) {
    yield ch;
  }
}

console.log(Array.from(line(myArray)))

Using implicit iteration with yield*:

let myArray = ["a", "b", "c"]

function* line(array) {
  yield "my array";
  yield* array;
}

console.log(Array.from(line(myArray)))

...basically, yield* $iterable; is the same thing as doing for( const v of $iterable ) yield v;.

CodePudding user response:

Sure, it's yield*

let myArray = ["a", "b", "c"]

function* line(array){
  yield "my array"
  yield* array
}

console.log(Array.from(line(myArray)))

  • Related