1. Iterable
1. 遍历Array可以采用下标循环,遍历Map和Set就无法使用下标。
2. 为了统一集合类型,ES6标准引入了新的iterable类型
Array、Map和Set都属于Iterable类型。
3. 具有iterable类型的集合可以通过新的for ... of循环来遍历
2. 检测浏览器是否支持Iterable
<script>
'use strict';
var nums = [1, 2, 3, 4];
for (var i of nums) {
}
console.log('浏览器支持for...of');
</script>
3. for…of的使用
- 遍历数组对象
<script>
var nums = [1, 2, 3, 4];
for (var num of nums) {
console.log(num);
}
</script>
- 遍历Map对象
<script>
var m = new Map([['rulai', 95], ['fozu', 75], ['fofo', 85]]);
for (var tmp of m) {
console.log(tmp[0] + '=' + tmp[1]);
}
</script>
- 遍历Set对象
<script>
var s = new Set(['a', 'b', 'c']);
for (var tmp of s) {
console.log(tmp);
}
</script>
4. for…in 和 for…of的区别
for...in
遍历的是对象的属性,如果给这个对象添加属性,也会把这个属性变量出来
但数组length()并没有把新增属性包括在内
for...of
只会循环遍历集合本身的元素
5. forEach()循环遍历
5.1 检测浏览器是否支持forEach()方法
forEach()方法是ES5.1标准引入的,你需要测试浏览器是否支持
5.2 forEach()使用
- 遍历数组对象
<script>
'use strict';
var nums = [1, 2, 3];
nums.forEach(function(element, index, array){
console.log(element + ', index = ' + index);
});
</script>
- 遍历Map对象
<script>
var m = new Map([['rulai', 95], ['fozu', 75], ['fofo', 85]]);
m.forEach(function(value, key, map){
console.log(value);
});
</script>
- 变量Set对象
<script>
var s = new Set(['a', 'b', 'c']);
s.forEach(function(element, sameElement, set){
console.log(element);
});
</script>