ECMAScript 2018 引入的新迭代器功能是 JavaScript 中的一个重要更新。迭代器提供了一种能够轻松地遍历数据集合的方式,例如数组或对象。在这篇文章中,我们将详细介绍 ECMAScript 2018 中的迭代器功能,并且提供一些实用的示例代码。
迭代器的定义
在 JavaScript 中,我们可以使用一个迭代器来遍历一组数据。迭代器是一个对象,它实现了一个 next()
方法,该方法返回一个对象,包含两个属性:done
和 value
。当迭代器遍历到数据末尾时,done
属性会被标记为 true
。value
属性表示当前遍历到的数据元素的值。
例如,我们可以使用以下代码来创建一个迭代器对象:
-- -------------------- ---- ------- --- ---------- - - ------------------ --------- -- - ----- -- ----- -- ----- -- - -- --- ---- ----- -- ----------- - ------------------- - -- ------- -- -- -
在上述代码中,我们使用了 ES6 中的生成器函数(generator function)来定义了一个迭代器对象。每次调用 next()
方法时,生成器函数会执行,直到达到 yield
关键字,将当前值暂停,并返回给调用者。for...of
循环在遍历迭代器时不断调用 next()
方法,直到 done
属性为 true
。
ECMAScript 2018 中的迭代器更新
在 ECMAScript 2018 中,我们有了更多对迭代器的支持。下面是本次更新中最重要的两个特性。
迭代器同时支持键和值
在 ECMAScript 2018 中,迭代器可以同时返回数据元素的键和值。我们可以使用新的 entries()
方法来实现这一点。该方法返回一个迭代器对象,每个对象都包含一个 key
和一个 value
属性。
例如,我们可以使用以下代码来创建一个 Map 对象,并使用 entries()
方法获取一个迭代器对象:
let myMap = new Map(); myMap.set("one", 1); myMap.set("two", 2); for (let entry of myMap.entries()) { console.log(entry); } // Output: ["one", 1], ["two", 2]
在上述代码中,myMap.entries()
返回了一个迭代器对象。在 for...of
循环中,我们遍历了迭代器对象,并输出了每个键和值的对应关系。
迭代器支持推出循环
在 ECMAScript 2018 中,我们可以通过调用迭代器对象的 return()
方法来提前退出循环。此时遍历过程会在当前位置停止,done
属性会被标记为 true
。
例如,我们可以使用以下代码来创建一个迭代器对象,并在循环的过程中调用 return()
方法:
-- -------------------- ---- ------- --- ---------- - - ------------------ --------- -- - ----- -- ----- -- ----- -- - -- --- -------- - ------------------------------ --- ---- ----- -- --------- - ------------------- -- ------ --- -- - ------------------ - - -- ------- -- -
在上述代码中,我们使用了一个迭代器对象,它包含了三个值,分别是 1、2 和 3。当 value
的值为 2 时,我们调用了 return()
方法,提前退出了循环。
总结
在 ECMAScript 2018 中,迭代器得到了一些非常实用的新功能。我们可以使用 entries()
方法获取数据集合中每个键值对的对应关系,还可以使用 return()
方法来提前退出循环。这些新的迭代器功能能够帮助我们更好地遍历数据集合,让我们的代码更加简洁和易于理解。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/645f2166968c7c53b013795b