对es中的iterable的理解

iterable

为了统一集合类型,ES6标准引入了新的iterable类型,Array、Map和Set都属于iterable类型,具有iterable类型的集合可以通过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)			// A B C
}
for(var x of s) {
	console.log(x)			// A B C
}
for(var x of m) {		// 遍历Map
	console.log(x[0] + '=' + x[1]);			// 1=x	2=y	3=z
}
Map的相关操作方法如下,Set同理:
	var m = new Map();		// 空Map
	m.set('Adam', 67);		// 添加新的 key-value
	m.set('Bob', 59);
	m.has('Adam');		// 是否存在 key 'Adam': true
	m.get('Adam');			// 67
	m.delete('Adam');		// 删除key 'Adam'
	m.get('Adam');			// undefined
for…of和for…in的比较

for…in适合遍历对象,拿到对象中的key。对于使用for…in来遍历array类型时,当添加额外属性的时候也会遍历出来,而for…of不会。

var a = ['A', 'B', 'C'];
a.name = 'Hello';
for(var x in a) {
	console.log(x);		// '0', '1', '2', 'name'
}
iterable的forEach方法
// Array
var a = ['A', 'B', 'C'];
a.forEach(function(element, index, array) {
	a.forEach(function(element, index, array) {
		// element: 指向当前元素的值
		// index: 指向当前索引
		// array:指向Array对象本身
		console.log(element);
	})
});
// Set
var s = new Set(['A', 'B', 'C']);
s.forEach(function(element, sameElement, set) {
	console.log(element);
})
// Map
var m  = new Map([1, 'x'], [2, 'y'], [3, 'z']);
m.forEach(function(value, key, map) {
	console.log(value);
})

Set与Array类似,但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);
})

参考链接:https://www.cnblogs.com/sxhlf/p/7942149.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值