美文网首页
JS--iterable

JS--iterable

作者: nickName0 | 来源:发表于2017-11-21 22:43 被阅读18次

遍历Array可以采用下标循环,遍历Map和Set就无法使用下标。为了统一集合类型,ES6标准引入了新的iterable类型,Array、Map和Set都属于iterable类型。具有iterable类型的集合可以通过新的for ... of循环来遍历。

var s = new Set([1,2,2,3,4,5,6,6,6]);
for (var x of s) {
    console.log(x);
}

var mm = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);

for (var x of mm) { // 遍历Map
    console.log(x[0] + '=' + x[1]);
}
  • for...of 与 for...in的区别:
    for ... in循环由于历史遗留问题,它遍历的实际上是对象的属性名称。一个Array数组实际上也是一个对象,它的每个元素的索引被视为一个属性。

  • forEach方法:它接收一个函数,每次迭代就自动回调该函数,以数组为例:

var arr = ['A','B','C','D'];

//参数t:表示当前元素的值;numer:对应下标;ts:对应数组(就是arr)
arr.forEach(function (t, number, ts) {
    console.log(t,number,ts);
})

输出:
A 0 [ 'A', 'B', 'C', 'D' ]
B 1 [ 'A', 'B', 'C', 'D' ]
C 2 [ 'A', 'B', 'C', 'D' ]
D 3 [ 'A', 'B', 'C', 'D' ]

回调函数参数也可以只写某一个:
// 参数t表示当前元素值
arr.forEach(function (t) {
    console.log(t);
})

//参数t:表示当前元素的值;numer:对应下标
arr.forEach(function (t, number) {
    console.log(t,number);
})
  • map对应forEach
var map = new Map([[1,'x'],[0,'y'],[2,'z']]);
//Map的回调函数参数依次为value、key和map本身:
map.forEach(function (t) {
    console.log(t);
})

//
map.forEach(function (t, number, ts) {
    console.log(t,number,ts);
})

map.forEach(function (t, number) {
    console.log(t,number);
})

输出:
x
y
z
x 1 Map { 1 => 'x', 0 => 'y', 2 => 'z' }
y 0 Map { 1 => 'x', 0 => 'y', 2 => 'z' }
z 2 Map { 1 => 'x', 0 => 'y', 2 => 'z' }
x 1
y 0
z 2
  • set对应forEach
var set = new Set(['x',1,3,4,55,44,3]);

set.forEach(function (t, number, ts) {
    console.log(t,number,ts);
})

输出:
x x Set { 'x', 1, 3, 4, 55, 44 }
1 1 Set { 'x', 1, 3, 4, 55, 44 }
3 3 Set { 'x', 1, 3, 4, 55, 44 }
4 4 Set { 'x', 1, 3, 4, 55, 44 }
55 55 Set { 'x', 1, 3, 4, 55, 44 }
44 44 Set { 'x', 1, 3, 4, 55, 44 }

相关文章

  • JS--iterable

    遍历Array可以采用下标循环,遍历Map和Set就无法使用下标。为了统一集合类型,ES6标准引入了新的itera...

网友评论

      本文标题:JS--iterable

      本文链接:https://www.haomeiwen.com/subject/rqsgvxtx.html