详谈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 相关文章推荐
为jquery.ui.dialog 增加“在当前鼠标位置打开”的功能
Nov 24 Javascript
Extjs列表详细信息窗口新建后自动加载解决方法
Apr 02 Javascript
使用jQuery时Form表单元素ID和name命名大忌
Mar 06 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
Mar 31 Javascript
JS动态改变表格边框宽度的方法
Mar 31 Javascript
AngularJS的表单使用详解
Jun 17 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
Mar 25 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
Dec 02 Javascript
p5.js入门教程和基本形状绘制
Mar 15 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
Feb 27 Javascript
js与jquery获取input输入框中的值实例讲解
Feb 27 jQuery
解决vue中el-tab-pane切换的问题
Jul 19 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
PHP中json_encode、json_decode与serialize、unserialize的性能测试分析
2010/06/09 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
2015/04/22 PHP
微信红包随机生成算法php版
2016/07/21 PHP
javascript 流畅动画实现原理
2009/09/08 Javascript
Date对象格式化函数代码
2010/07/17 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
jQuery类选择器用法实例
2014/12/23 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
微信小程序 action-sheet底部菜单详解
2016/10/27 Javascript
jquery对所有input type=text的控件赋值实现方法
2016/12/02 Javascript
老生常谈ES6中的类
2017/07/31 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
原生js实现省市区三级联动代码分享
2018/02/12 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
优雅的在React项目中使用Redux的方法
2018/11/10 Javascript
vue返回上一页面时回到原先滚动的位置的方法
2018/12/20 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
2019/03/05 Javascript
JavaScript语句错误throw、try及catch实例解析
2020/08/18 Javascript
Python导入oracle数据的方法
2015/07/10 Python
Python变量和字符串详解
2017/04/29 Python
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
浅谈flask截获所有访问及before/after_request修饰器
2018/01/18 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
2018/03/20 Python
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
Python 互换字典的键值对实例
2019/02/12 Python
python数据分析:关键字提取方式
2020/02/24 Python
Python Charles抓包配置实现流程图解
2020/09/29 Python
ALDI奥乐齐官方海外旗舰店:德国百年超市
2017/12/27 全球购物
院药学专业个人求职信
2013/09/21 职场文书
《宿建德江》教学反思
2014/04/23 职场文书
2019年国庆祝福语(70句)
2019/09/19 职场文书
2019年世界儿童日宣传标语
2019/11/22 职场文书
mybatis源码解读之executor包语句处理功能
2022/02/15 Java/Android
python双向链表实例详解
2022/05/25 Python
java实现面板之间切换功能
2022/06/10 Java/Android