详谈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 相关文章推荐
表格 隔行换色升级版
Nov 07 Javascript
jquery实现pager控件示例
Apr 09 Javascript
推荐25个超炫的jQuery网格插件
Nov 28 Javascript
jquery实现select下拉框美化特效代码分享
Aug 18 Javascript
超简单的Vue.js环境搭建教程
Mar 17 Javascript
js字符串与Unicode编码互相转换
May 17 Javascript
socket.io与pm2(cluster)集群搭配的解决方案
Jun 02 Javascript
npm国内镜像 安装失败的几种解决方案
Jun 04 Javascript
从vue源码看props的用法
Jan 09 Javascript
laypage+SpringMVC实现后端分页
Jul 27 Javascript
angular inputNumber指令输入框只能输入数字的实现
Dec 03 Javascript
Vue初始化中的选项合并之initInternalComponent详解
Jun 11 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常用的排序和查找算法
2015/08/06 PHP
php5.4传引用时报错问题分析
2016/01/22 PHP
在javaScript中关于submit和button的区别介绍
2013/10/20 Javascript
Node.js中HTTP模块与事件模块详解
2014/11/14 Javascript
js实现遮罩层弹出框的方法
2015/01/15 Javascript
浅谈JavaScript事件的属性列表
2015/03/01 Javascript
javascript中判断json的方法总结
2015/08/27 Javascript
js编写贪吃蛇的小游戏
2020/08/24 Javascript
JQuery datepicker 用法详解
2015/12/25 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
2016/11/28 Javascript
Webpack实现按需打包Lodash的几种方法详解
2017/05/08 Javascript
利用babel将es6语法转es5的简单示例
2017/12/01 Javascript
Vue的土著指令和自定义指令实例详解
2018/02/04 Javascript
Node.js的Koa实现JWT用户认证方法
2018/05/05 Javascript
如何通过setTimeout理解JS运行机制详解
2019/03/23 Javascript
原生js实现无缝轮播图
2020/01/11 Javascript
JS实现网页烟花动画效果
2020/03/10 Javascript
原生js滑动轮播封装
2020/07/31 Javascript
浅谈在vue-cli3项目中解决动态引入图片img404的问题
2020/08/04 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
Python中列表(list)操作方法汇总
2014/08/18 Python
使用C语言扩展Python程序的简单入门指引
2015/04/14 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
2017/11/24 Python
python和opencv实现抠图
2018/07/18 Python
python 弹窗提示警告框MessageBox的实例
2019/06/18 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
2020/02/27 Python
python小程序基于Jupyter实现天气查询的方法
2020/03/27 Python
python如何保存文本文件
2020/06/07 Python
纯css3实现的动画按钮的实例教程
2014/11/17 HTML / CSS
质检部岗位职责
2013/11/11 职场文书
电气工程和自动化自荐信范文
2013/12/25 职场文书
无私奉献演讲稿
2014/09/04 职场文书
2014年学校领导班子对照检查材料
2014/09/19 职场文书
2015年药品销售工作总结范文
2015/05/25 职场文书
SpringBoot Http远程调用的方法
2022/08/14 Java/Android