当前位置:首页 > JavaScript

js实现forof

2026-03-14 04:49:17JavaScript

for...of 循环的实现

JavaScript 的 for...of 循环用于遍历可迭代对象(如数组、字符串、Map、Set 等)。以下是几种实现方式:

使用 Symbol.iterator

可迭代对象必须实现 [Symbol.iterator] 方法。可以通过自定义迭代器实现 for...of 的功能:

js实现forof

const iterable = {
  [Symbol.iterator]() {
    let step = 0;
    const iterator = {
      next() {
        step++;
        if (step <= 5) {
          return { value: step, done: false };
        }
        return { value: undefined, done: true };
      }
    };
    return iterator;
  }
};

for (const value of iterable) {
  console.log(value); // 输出 1, 2, 3, 4, 5
}

手动实现类似 for...of 的功能

如果不使用 for...of 语法,可以通过手动调用迭代器实现类似功能:

js实现forof

const arr = [1, 2, 3];
const iterator = arr[Symbol.iterator]();

let result = iterator.next();
while (!result.done) {
  console.log(result.value); // 输出 1, 2, 3
  result = iterator.next();
}

生成器函数

生成器函数返回的也是可迭代对象,可以直接用于 for...of

function* generateSequence() {
  yield 1;
  yield 2;
  yield 3;
}

for (const value of generateSequence()) {
  console.log(value); // 输出 1, 2, 3
}

自定义类的迭代器

可以通过在类中定义 [Symbol.iterator] 方法使类支持 for...of

class Range {
  constructor(start, end) {
    this.start = start;
    this.end = end;
  }

  [Symbol.iterator]() {
    let current = this.start;
    const end = this.end;
    return {
      next() {
        if (current <= end) {
          return { value: current++, done: false };
        }
        return { done: true };
      }
    };
  }
}

for (const num of new Range(1, 5)) {
  console.log(num); // 输出 1, 2, 3, 4, 5
}

注意事项

  • for...of 只能用于可迭代对象,普通对象默认不可迭代。
  • for...in 不同,for...of 遍历的是值而不是键。
  • 可以通过 breakreturn 提前终止 for...of 循环。

标签: jsforof
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…