MST

星途 面试题库

面试题:JavaScript中如何使用Symbol.iterator实现一个简单的可迭代对象

请你用JavaScript创建一个简单的数组类似的可迭代对象,通过实现Symbol.iterator方法,使得该对象可以在for...of循环中使用,简要描述实现思路并给出代码示例。
22.8万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 创建一个包含数据的对象。
  2. 在该对象上定义Symbol.iterator方法,该方法返回一个迭代器对象。
  3. 迭代器对象需要有next方法,每次调用next方法返回一个包含valuedone属性的对象,value为当前迭代的值,done表示是否迭代结束。

代码示例

const iterableObject = {
    data: [1, 2, 3],
    [Symbol.iterator]() {
        let index = 0;
        return {
            next: () => {
                if (index < this.data.length) {
                    return { value: this.data[index++], done: false };
                } else {
                    return { value: undefined, done: true };
                }
            }
        };
    }
};

for (const value of iterableObject) {
    console.log(value);
}