参考自廖雪峰老师官方网站的JavaScript教程
以下是对iterable部分的简单总结
iterable
Array Map和Set都属于iterable类型
具有iterable类型的集合可以通过for…of循环来遍历
var a = ['a','b','c'];
for( var x of a ){
console.log(x); //a b c
}
for…of与for…in的不同
for…in遍历的实际上是对象的属性名称
一个数组实际上也是一个对象,每个元素的索引可以被视为一个属性
for( var x in a ){
console.log(x); //0 1 2
}
更好的方式是直接使用iterable内置的forEach方法
它接收一个函数,没次迭代自动回调该函数。
a.forEach(
function(element,index,array){
//element 指向当前元素的值
//index 指向当前元素的索引
//array 指向array对象本身
console.log(element,index);
// a 0
// b 1
// c 2
}
)
Set没有索引,所以Set回调函数的前两个参数都是元素本身
var s = new Set(['a','b','c']);
s.forEach(
function(element,sameElement,set){
console.log(element);//a b c
console.log(sameElement);//a b c
console.log(set);//Set Set Set
}
)
Map的回调函数参数依次为value key map
var m = new Map([[1,'x'],[2,'y'],[3,'z']]);
m.forEach(function(value,key,map){
console.log(value);//x y z
console.log(key);//1 2 3
console.log(map)//Map Map Map
})