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

具有iterable类型的集合可以通过新的for ... of循环来遍历。
for ... of循环是ES6引入的新的语法,请测试你的浏览器是否支持:
'use strict';
var a = [1, 2, 3];
for (var x of a) {
}
alert('你的浏览器支持for ... of');
用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
alert(x);
}
for (var x of s) { // 遍历Set
alert(x);
}
for (var x of m) { // 遍历Map
alert(x[0] + '=' + x[1]);
}
你可能会有疑问,for ... of循环和for ... in循环有何区别?
for ... in循环由于历史遗留问题,它遍历的实际上是对象的属性名称。一个Array数组实际上也是一个对象,它的每个元素的索引被视为一个属性。
当我们手动给Array对象添加了额外的属性后,for ... in循环将带来意想不到的意外效果:
var a = ['A', 'B', 'C'];
a.name = 'Hello';
for (var x in a) {
alert(x); // '0', '1', '2', 'name'
}
for ... in循环将把name包括在内,但Array的length属性却不包括在内。
for ... of循环则完全修复了这些问题,它只循环集合本身的元素:
var a = ['A', 'B', 'C'];
a.name = 'Hello';
for (var x of a) {
alert(x); // 'A', 'B', 'C'
}
这就是为什么要引入新的for ... of循环。
然而,更好的方式是直接使用iterable内置的forEach方法,它接收一个函数,每次迭代就自动回调该函数。以Array为例:
var a = ['A', 'B', 'C'];
a.forEach(function (element, index, array) {
// element: 指向当前元素的值
// index: 指向当前索引
// array: 指向Array对象本身
alert(element);
});
注意,forEach()方法是ES5.1标准引入的,你需要测试浏览器是否支持。
Set与Array类似,但Set没有索引,因此回调函数的前两个参数都是元素本身:
var s = new Set(['A', 'B', 'C']);
s.forEach(function (element, sameElement, set) {
alert(element);
});
Map的回调函数参数依次为value、key和map本身:
var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
m.forEach(function (value, key, map) {
alert(value);
});
如果对某些参数不感兴趣,由于JavaScript的函数调用不要求参数必须一致,因此可以忽略它们。例如,只需要获得Array的element:
var a = ['A', 'B', 'C'];
a.forEach(function (element) {
alert(element);
});
# JavaScript之iterable
# JavaScript
# iterable
# Python 出现错误TypeError: ‘NoneType’ object is not ite
# java集合_浅谈Iterable和Iterator的区别
# 遍历
# 回调
# 都是
# 是一个
# 会有
# 这就是
# 可以通过
# 你可
# 只需要
# 为例
# 当我们
# 上也
# 意想不到
# 将把
# 它只
# 依次为
# 遗留问题
# 测试你的
# 不感
# 有何区别
相关文章:
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
建站之星如何快速解决建站难题?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
建站之星安装失败:服务器环境不兼容?
香港服务器部署网站为何提示未备案?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
昆明高端网站制作公司,昆明公租房申请网上登录入口?
学校为何禁止电信移动建设网站?
哈尔滨网站建设策划,哈尔滨电工证查询网站?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
python的本地网站制作,如何创建本地站点?
导航网站建站方案与优化指南:一站式高效搭建技巧解析
建站主机是什么?如何选择适合的建站主机?
香港服务器选型指南:免备案配置与高效建站方案解析
c# 在ASP.NET Core中管理和取消后台任务
已有域名和空间如何搭建网站?
实现虚拟支付需哪些建站技术支撑?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
外贸公司网站制作哪家好,maersk船公司官网?
网站制作费用多少钱,一个网站的运营,需要哪些费用?
如何通过云梦建站系统实现SEO快速优化?
如何在阿里云通过域名搭建网站?
西安大型网站制作公司,西安招聘网站最好的是哪个?
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
打鱼网站制作软件,波克捕鱼官方号怎么注册?
建站之星云端配置指南:模板选择与SEO优化一键生成
建站之星如何取消后台验证码生成?
建站10G流量真的够用吗?如何应对访问高峰?
电商平台网站制作流程,电商网站如何制作?
如何打造高效商业网站?建站目的决定转化率
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
如何续费美橙建站之星域名及服务?
非常酷的网站设计制作软件,酷培ai教育官方网站?
图册素材网站设计制作软件,图册的导出方式有几种?
怀化网站制作公司,怀化新生儿上户网上办理流程?
如何快速辨别茅台真假?关键步骤解析
营销式网站制作方案,销售哪个网站招聘效果最好?
如何在局域网内绑定自建网站域名?
建站VPS能否同时实现高效与安全翻墙?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
如何快速搭建虚拟主机网站?新手必看指南
实例解析angularjs的filter过滤器
如何在Golang中指定模块版本_使用go.mod控制版本号
如何基于云服务器快速搭建网站及云盘系统?
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
建站主机是否属于云主机类型?
*请认真填写需求信息,我们会在24小时内与您取得联系。