MST

星途 面试题库

面试题:JavaScript中可迭代对象与迭代器的关系及应用场景

阐述JavaScript中可迭代对象和迭代器的概念以及它们之间的关系。列举至少两个实际应用场景,说明在这些场景中可迭代对象和迭代器是如何发挥作用的,并给出相应的代码示例。
42.7万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

可迭代对象

可迭代对象是指实现了可迭代协议的对象,它内部包含一个Symbol.iterator方法,该方法返回一个迭代器。常见的可迭代对象有数组、字符串、Map、Set等。

迭代器

迭代器是一个对象,它实现了next()方法,每次调用next()方法会返回一个包含valuedone属性的对象。value表示当前迭代的值,done是一个布尔值,当为true时表示迭代结束。

两者关系

可迭代对象通过其Symbol.iterator方法返回一个迭代器,迭代器用于遍历可迭代对象中的值。

实际应用场景及代码示例

  1. 遍历数组
    const arr = [1, 2, 3];
    const iterator = arr[Symbol.iterator]();
    let result = iterator.next();
    while (!result.done) {
        console.log(result.value);
        result = iterator.next();
    }
    
  2. 自定义可迭代对象
    const myIterable = {
        data: [10, 20, 30],
        [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 myIterable) {
        console.log(value);
    }
    

在上述遍历数组场景中,数组作为可迭代对象,通过其Symbol.iterator方法生成迭代器来实现遍历。自定义可迭代对象场景中,通过定义Symbol.iterator方法返回迭代器,使得自定义对象可以使用for...of等迭代语法进行遍历。