详谈js遍历集合(Array,Map,Set)


Posted in Javascript onApril 06, 2017

Array可以使用下标,Map和Set不能使用下标,ES6引入了iterable类型,Array,Map,Set都属于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
  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'
}

var a = ['A', 'B', 'C'];
a.name = 'Hello';
for (var x of a) {
  alert(x); // 'A', 'B', 'C'
}

>更好的方式:iterable内置的forEach方法:

var a = ['A', 'B', 'C'];
a.forEach(function (element, index, array) {
  // element: 指向当前元素的值
  // index: 指向当前索引
  // array: 指向Array对象本身
  alert(element);//'A','B','C'
});

var s = new Set(['A', 'B', 'C']);
s.forEach(function (element, sameElement, set) {
  alert("参数1="+element+",参数2="+sameElement);
});
//参数1=A,参数2=A
//参数1=B,参数2=B
//参数1=C,参数2=C

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

以上这篇详谈js遍历集合(Array,Map,Set)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用js 让图片在 div或dl里 居中,底部对齐
Jan 21 Javascript
大家未必知道的Js技巧收藏
Apr 07 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
Dec 19 Javascript
解析JavaScript中点号“.”的多义性
Dec 02 Javascript
JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法
Apr 18 Javascript
React Native实现地址挑选器功能
Oct 24 Javascript
layui--js控制switch的切换方法
Sep 03 Javascript
angular8和ngrx8结合使用的步骤介绍
Dec 01 Javascript
js实现树形数据转成扁平数据的方法示例
Feb 27 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
Oct 26 Javascript
html中创建并调用vue组件的几种方法汇总
Nov 17 Javascript
js前端面试常见浏览器缓存强缓存及协商缓存实例
Jun 21 Javascript
javascript中this用法实例详解
Apr 06 #Javascript
selenium 与 chrome 进行qq登录并发邮件操作实例详解
Apr 06 #Javascript
js遍历获取表格内数据的方法(必看)
Apr 06 #Javascript
JS优化与惰性载入函数实例分析
Apr 06 #Javascript
大白话讲解JavaScript的Promise
Apr 06 #Javascript
JS实现的二叉树算法完整实例
Apr 06 #Javascript
JavaScript结合HTML DOM实现联动菜单
Apr 05 #Javascript
You might like
火车头discuz6.1 完美采集的php接口文件
2009/09/13 PHP
为PHP初学者的8点有效建议
2010/11/20 PHP
php array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
Yii使用find findAll查找出指定字段的实现方法
2014/09/05 PHP
php中$_GET与$_POST过滤sql注入的方法
2014/11/03 PHP
php函数重载的替代方法--伪重载详解
2015/05/08 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
JavaScript基本对象
2007/01/11 Javascript
javaScript对象和属性的创建方法
2007/01/15 Javascript
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
2007/11/30 Javascript
jQuery Clone Bug解决代码
2010/12/22 Javascript
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
JavaScript数组各种常见用法实例分析
2015/08/04 Javascript
jQuery实现进度条效果代码
2015/12/17 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
浅谈Angular的$q, defer, promise
2016/12/20 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
2017/01/16 Javascript
bootstrap插件treeview实现全选父节点下所有子节点和反选功能
2017/07/21 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
2017/08/11 Javascript
JS中的防抖与节流及作用详解
2019/04/01 Javascript
教你完全理解ReentrantLock重入锁
2019/06/03 Javascript
Python中的Numpy入门教程
2014/04/26 Python
python批量生成本地ip地址的方法
2015/03/23 Python
Python实现读取txt文件并画三维图简单代码示例
2017/12/09 Python
Python字符串的常见操作实例小结
2019/04/08 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
djano一对一、多对多、分页实例代码
2019/08/16 Python
Pandas聚合运算和分组运算的实现示例
2019/10/17 Python
如何使用Python破解ZIP或RAR压缩文件密码
2020/01/09 Python
匡威英国官网:Converse英国
2018/12/02 全球购物
法国滑雪假期的专家:Ski Planet
2019/11/02 全球购物
JPA的特点
2014/10/25 面试题
计算机求职信
2014/07/02 职场文书
小学运动会前导词
2015/07/20 职场文书
Django rest framework如何自定义用户表
2021/06/09 Python