javascript中的iterable

在es6中,引入了新的Map和Set对象,Array可以通过下标遍历,而Map和Set无法通过下标遍历。为了统一集合,es引入了新的iterable类型,Array,Map,Set类型都属于iterable。

讲讲常用的几种遍历方法。

1.for..in 

var a = [1,2,3];
for(var index in a ){
    console.log(index);
    console.log(a[index]);
}

上面分别输出0,1,2  1,2,3

只有Array能有for..in  Map和Set都不能使用,for..in遍历的是索引

2.for..of

for(var x of a){
    console.log(x);
}
var d =  new Set(['A', 'B', 'C']);
for(var dd of d){
    console.log(dd);
}
for..of遍历的是值

这是上面运行的结果。

for..of 与 for..in的区别

for..of是es6新引入的概念,

for ... in循环由于历史遗留问题,它遍历的实际上是对象的属性名称。一个Array数组实际上也是一个对象,它的每个元素的索引被视为一个属性。

当我们手动给Array对象添加了额外的属性后,for ... in循环将带来意想不到的意外效果:

var a = ['A', 'B', 'C'];
a.name = 'Hello';
for (var x in a) {
    console.log(x); // '0', '1', '2', 'name'

3.foreach()方法

var s = new Set(['hxy','yyw','zz']);
s.forEach(function (element,sameElement,set) {
    console.log(element);
})
var s2 = new Map([[1,'hxy'],[2,'yyw'],[3,'zzh']]);
s2.forEach(function (value,key,map) {
    console.log(key+":"+value);

})


猜你喜欢

转载自blog.csdn.net/hxy19971101/article/details/79744613
今日推荐