function makeIter(arr) { let i = 0; return { next: () => i < arr.length ? { value: arr[i++], done: false } : { value: undefined, done: true }, [Symbol.iterator]() { return this; }, }; } console.log([...makeIter(["a","b"])]);