数组和字符串的迭代器iterator

const arr = [1, 2, 3, 4];
const str = "hello";
function myIterator(arr) {
  let index = 0;
  return {
    next() {
      if (index < arr.length) {
        return {
          value: arr[index++],
          done: false,
        };
      }
      return { value: undefined, done: true };
    },
  };
}
let iter = myIterator(arr);
console.log(iter.next()); // {value: 1, done: false}
console.log(iter.next()); // {value: 2, done: false}
console.log(iter.next()); // {value: 3, done: false}
console.log(iter.next()); // {value: 4, done: false}
console.log(iter.next()); // {value: undefined, done: true}
let iter1 = myIterator(str);
console.log(iter1.next()); // {value: 'h', done: false}
console.log(iter1.next()); // {value: 'e', done: false}
console.log(iter1.next()); // {value: 'l', done: false}
console.log(iter1.next()); // {value: 'l', done: false}
console.log(iter1.next()); // {value: 'o', done: false}
console.log(iter1.next()); // {value: undefined, done: true}