18.遍历器 迭代器

遍历器 迭代器

遍历器就是第一个对象,这个对象有一个 next 方法,会返回需要的数据,可遍对象就是那些部署了 Symbol.iterator 属性的对象。我们也可以通过 [].entries() 获取到数组的遍历器

const colors = ['red', 'blue', 'green'];
// 这里的 `iterator` 就是遍历器
const iterator = colors[Symbol.iterator]();
// `iterator` 上面有个一 `next` 方法,每一次执行都会返回一个对象,包含一个 `name` 属性记录值和一个 `done` 属性记录遍历是否完结。
iterator.next(); // {value: "red", done: false}

构建数组中的 values 方法

目前的浏览器上只有 [].keys() 这个方法,返回的就是一个遍历器对象,我们可以自己尝试构建一个 [].values() 方法

const colors = ['red', 'blue', 'green'];
Array.prototype.values = function () {
    let i = 0;
    let items = this;
    return {
        next() {
            const done = i >= items.length;
            const value = done ? undefined : items[i++];
            return {
                value,
                done
            }
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容