全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JavaScript之iterable_动力节点Java学院整理

遍历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标准引入的,你需要测试浏览器是否支持。

SetArray类似,但Set没有索引,因此回调函数的前两个参数都是元素本身:

var s = new Set(['A', 'B', 'C']);
s.forEach(function (element, sameElement, set) {
  alert(element);
});

Map的回调函数参数依次为valuekeymap本身:

var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
m.forEach(function (value, key, map) {
  alert(value);
});

如果对某些参数不感兴趣,由于JavaScript的函数调用不要求参数必须一致,因此可以忽略它们。例如,只需要获得Arrayelement

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小时内与您取得联系。