function* userGenerator(users) { for (let user of users) { if (!user.isActive) { return; } yield user; } } const users = [ { name: "Ben", isActive: true }, { name: "Alex", isActive: false }, { name: "Tyler", isActive: true }, ]; const gen = userGenerator(users); for (let user of gen) { console.log(user); }
return will stop the generator, so the second user will not be yielded which causes only the user object for Ben to be logged (instead of both Ben and Tyler). To fix this, use continue instead of return.
function* userGenerator(users) { for (let user of users) { if (!user.isActive) { continue; } yield user; } } const users = [ { name: "Ben", isActive: true }, { name: "Alex", isActive: false }, { name: "Tyler", isActive: true }, ]; const gen = userGenerator(users); for (let user of gen) { console.log(user); }