'use strict';
//二,9,iterable
//for...of循环遍历集合
var a = [1,2,3];
for(var x of a){
console.log(x);
}
console.log('你的浏览器支持for...of');
var a = ['A','B','C'];
var s = new Set(['A','B','C']);
var m = new Map([[1,'x'],[2,'y'],[3,'z']]);
for (var x of a){ //遍历Array
console.log(x);
}
for (var x of s){ //遍历Set
console.log(x);
}
for (var x of m){
console.log(x[0] + '=' + x[1]);
}
//for...of循环和for...in循环有什么区别?
//for...in循环,遍历的实际上是对象的属性名称
//我们手动给Array对象添加了额外的属性名后:
var a = ['A','B','C'];
a.name = 'Hello';
for(var x in a){
console.log(x); //'0','1','2','name'
} //for...in循环把name包括在内
//for...of循环只循环集合本身的元素
var a = ['A','B','C'];
a.name = 'Hello';
for(var x of a){
console.log(x); //'A','B','C'
}
//更好的方式是直接使用iterable内置的forEach方法
//它接收一个函数,每次迭代就自动回调该函数,以Array为例:
var a = ['A','B','C'];
a.forEach(function(element, index, array){
//element:指向当前元素的值
//index: 指向当前索引
//array: 指向Array对象本身
console.log(element + ',index = ' + index);
});
//Set没有索引,因此回调函数的前两个参数都是元素本身:
var s = new Set(['A','B','C']);
s.forEach(function(element, sameElement, set){
console.log(element);
});
//Map的回调函数参数依次为value,key和map 本身:
var m = new Map([[1,'x'],[2,'y'],[3,'z']]);
m.forEach(function(value, key, map){
console.log( value );
});
//只需要获得Array的element:
var a = ['A','B','C'];
a.forEach(function(element){
console.log( element );
})
console