JS--iterable

2017-11-21  本文已影响18人  nickName0

遍历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]);
}
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);
})
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
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 }
上一篇 下一篇

猜你喜欢

热点阅读