如何使用 ES6 的迭代器和生成器

阅读时长 6 分钟读完

什么是迭代器和生成器?

在 ES6 中,迭代器和生成器是两个新的特性,它们可以让我们更加方便地实现复杂的算法和数据结构。

迭代器是一个让我们能够遍历数据结构的对象,可以通过调用 next() 方法,按照数据结构中数据的顺序,依次返回每一个元素的值和一个布尔值,表示遍历是否结束。

-- -------------------- ---- -------
-------- ------------------- -
  --- --------- - --
  
  ------ -
    ----- ---------- -
      ------ --------- - ------------ -
        - ------ ------------------- ----- ----- - -
        - ----- ---- --
    -
  --
-

----- -------- - ------------------ ---- ------

----------------------------- -- - ------ ---- ----- ----- -
----------------------------- -- - ------ ---- ----- ----- -
----------------------------- -- - ------ ---- ----- ----- -
----------------------------- -- - ----- ---- -
展开代码

生成器是一种能够生成迭代器的函数,可以用一种简洁的方式去定义迭代器。

-- -------------------- ---- -------
--------- -------------- -
  ----- ----
  ----- ----
  ----- ----
-

----- -------- - ---------------

----------------------------- -- - ------ ---- ----- ----- -
----------------------------- -- - ------ ---- ----- ----- -
----------------------------- -- - ------ ---- ----- ----- -
----------------------------- -- - ----- ---- -
展开代码

迭代器和生成器的应用场景

在日常的开发过程中,我们会经常用到迭代器和生成器来实现一些常见的算法和数据结构。

实现一个链表

链表是一种常见的数据结构,实现它的方式有多种,其中一种方式就是使用迭代器。

-- -------------------- ---- -------
----- -------- -
  ------------------ ---- - ----- -
    ---------- - ------
    --------- - -----
  -
-

----- ---------- -
  ------------- -
    --------- - -----
    --------- - -----
  -
  
  ---------- -
    ----- ---- - --- ----------------
    
    -- ---------- --- ----- -
      --------- - -----
      --------- - -----
    - ---- -
      -------------- - -----
      --------- - -----
    -
  -
  
  -------------------- -
    --- ------- - ----------
    
    ----- -------- --- ----- -
      ----- --------------
      ------- - -------------
    -
  -
-

----- ---- - --- -------------

--------------
--------------
--------------

--- ------ ----- -- ----- -
  -------------------
-
展开代码

实现一个斐波那契数列

斐波那契数列是一种常见的数列,它的每一项都是前两项之和。

-- -------------------- ---- -------
--------- ----------- -
  --- - - -- - - --
  
  ----- ------ -
    ----- --
    --- -- - --- - - ---
  -
-

----- -------- - ------------

----------------------------- -- - ------ -- ----- ----- -
----------------------------- -- - ------ -- ----- ----- -
----------------------------- -- - ------ -- ----- ----- -
----------------------------- -- - ------ -- ----- ----- -
----------------------------- -- - ------ -- ----- ----- -
展开代码

如何使用迭代器和生成器

遍历数组

可以通过 for...of 循环遍历数组。

遍历 Map 和 Set

可以通过 for...of 循环遍历 Map 和 Set。

-- -------------------- ---- -------
----- --- - --- -----
  ----- ---
  ----- ---
  ----- --
---

--- ------ ----- ------ -- ---- -
  ---------------- -------
-

----- --- - --- --------- ---- ------

--- ------ ----- -- ---- -
  -------------------
-
展开代码

数组和字符串的扩展运算符

可以使用迭代器和生成器实现数组和字符串的扩展运算符。

-- -------------------- ---- -------
--------- ------- --------- -
  ----- -------- - ----------------------------
  
  --- ---- - - -- - - -- ---- -
    ----- - ----- ----- - - ----------------
    
    -- ------ -
      -------
    -
    
    ----- ------
  -
-

----- ----- - ----- ---- ---- ---- -----

----------------------- --------- -- ----- ----
-------------------------- -- ----- ---- ---- ---- ----
展开代码

总结

迭代器和生成器是 ES6 中的两个新特性,它们可以使代码更加简洁易懂,同时也能帮助我们更好地实现一些复杂的算法和数据结构。在日常的开发过程中,我们可以选择使用迭代器和生成器来优化和处理代码。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64588cab968c7c53b0ae77ad

纠错
反馈

纠错反馈