for/of与Set和Map

Posted 浪系青年的空间

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了for/of与Set和Map相关的知识,希望对你有一定的参考价值。

ES6内置的Set(集合)和Map(映射)类是可迭代的。在使用for/of迭代时,循环体对集合中的每个元素都会运行一次。可以使用类似下面的代码打印出一个文本字符串中的唯一单词:

let text = "Na na na na na na na na Batman!";
let wordSet = new Set(text.split(" "));
let unique = [];
for(let word of wordSet) 
    unique.push(word);

unique // => ["Na", "na", "Batman!"]

Map则比较有意思,因为Map对象的迭代器并不迭代Map键或Map值,而是迭代键/值对。每次迭代,迭代器都会返回一个数组,其第一个元素时键,第二个元素时对应的值。给出一个Map m,可以像下面这样迭代和解构其键/值对:

let m = new Map([[1, "one"]]);
for(let [key, value] of m) 
    key    // => 1
    value  // => "one"

 

以上是关于for/of与Set和Map的主要内容,如果未能解决你的问题,请参考以下文章

ES6 之 Set数据结构和Map数据结构 Iterator和for...of循环

forfor in和for of

es6-Iterator与for...of

for of 与 for in

14.Iterator 和 for...of 循环

for in 和for of的区别