详谈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 相关文章推荐
javascript 写类方式之二
Jul 05 Javascript
关于ExtJS4.1:快捷键支持的问题
Apr 24 Javascript
AngularJS使用ngMessages进行表单验证
Dec 27 Javascript
深入分析node.js的异步API和其局限性
Sep 05 Javascript
js中通过getElementsByName访问name集合对象的方法
Oct 31 Javascript
浅谈js键盘事件全面控制
Dec 01 Javascript
微信小程序 ecshop地址三级联动实现实例代码
Feb 28 Javascript
Vue非父子组件通信详解
Jun 12 Javascript
karma+webpack搭建vue单元测试环境的方法示例
May 24 Javascript
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
Apr 04 Javascript
Egg Vue SSR 服务端渲染数据请求与asyncData
Nov 24 Javascript
vue3.0 加载json的方法(非ajax)
Oct 26 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
session 的生命周期是多长
2006/10/09 PHP
PHP setcookie设置Cookie用法(及设置无效的问题)
2011/07/13 PHP
php中通过curl smtp发送邮件
2012/06/05 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
jquery中获取元素的几种方式小结
2011/07/05 Javascript
javascript用户注册提示效果的简单实例
2013/08/17 Javascript
HTML页面滚动时获取离页面顶部的距离2种实现方法
2013/09/05 Javascript
javascript控制图片播放的实现代码
2020/07/29 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
AngularJS入门教程之链接与图片模板详解
2016/08/19 Javascript
jQuery Pagination分页插件_动力节点Java学院整理
2017/07/17 jQuery
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
CentOS环境中MySQL修改root密码方法
2018/01/07 Javascript
vue js秒转天数小时分钟秒的实例代码
2018/08/08 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
2019/02/11 Javascript
vue input输入框关键字筛选检索列表数据展示
2020/10/26 Javascript
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
微信小程序日历插件代码实例
2019/12/04 Javascript
开发Node CLI构建微信小程序脚手架的示例
2020/03/27 Javascript
在js文件中引入(调用)另一个js文件的三种方法
2020/09/11 Javascript
Vue+axios封装请求实现前后端分离
2020/10/23 Javascript
jquery实现拖拽小方块效果
2020/12/10 jQuery
[02:39]DOTA2英雄基础教程 天怒法师
2013/11/29 DOTA
python实现小球弹跳效果
2019/05/10 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
2013/04/24 HTML / CSS
追悼会上的答谢词
2014/01/10 职场文书
2014年计算机专业个人自我评价
2014/01/19 职场文书
职业女性的职业规划
2014/03/04 职场文书
交通事故私了协议书
2014/04/16 职场文书
2014年最新个人对照检查材料范文
2014/09/25 职场文书
学习型家庭事迹材料
2014/12/20 职场文书
大学生求职意向书
2015/05/11 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书