详谈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代码
Dec 04 Javascript
JavaScript实现表格快速变色效果代码
Aug 19 Javascript
怎么引入(调用)一个JS文件
May 26 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
Jul 22 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
Oct 18 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
Nov 30 Javascript
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
May 26 jQuery
Node.js实现连接mysql数据库功能示例
Sep 15 Javascript
Three.js基础学习之场景对象
Sep 27 Javascript
vue2中引用及使用 better-scroll的方法详解
Nov 15 Javascript
JavaScript中的一些实用小技巧总结
Apr 07 Javascript
nodemon实现Typescript项目热更新的示例代码
Nov 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 判断字符串中是否包含html标签
2014/02/17 PHP
php面向对象中static静态属性和静态方法的调用
2015/02/08 PHP
Yii使用smsto短信接口的函数demo示例
2016/07/13 PHP
php实现带读写分离功能的MySQL类完整实例
2016/07/28 PHP
PHP实现防止表单重复提交功能【基于token验证】
2018/05/24 PHP
laravel 数据验证规则详解
2019/10/23 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
javascript instanceof 与typeof使用说明
2010/01/11 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
微信小程序商城项目之侧栏分类效果(1)
2017/04/17 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
Angular.JS内置服务$http对数据库的增删改使用教程
2017/05/07 Javascript
node通过express搭建自己的服务器
2017/09/30 Javascript
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
2018/06/05 jQuery
vue input实现点击按钮文字增删功能示例
2019/01/29 Javascript
vue-router路由模式详解(小结)
2019/08/26 Javascript
layui-table对返回的数据进行转变显示的实例
2019/09/04 Javascript
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
Python实现Youku视频批量下载功能
2017/03/14 Python
python之PyMongo使用总结
2017/05/26 Python
Python 3.8中实现functools.cached_property功能
2019/05/29 Python
Python中IP地址处理IPy模块的方法
2019/08/16 Python
python使用gdal对shp读取,新建和更新的实例
2020/03/10 Python
Canvas环形饼图与手势控制的实现代码
2019/11/08 HTML / CSS
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
国际贸易专业个人求职信范文分享
2013/12/14 职场文书
公司总经理工作职责管理办法
2014/02/28 职场文书
学校欢迎标语
2014/06/18 职场文书
环卫工作汇报材料
2014/10/28 职场文书
2014公司年终工作总结
2014/12/19 职场文书
大学生操行评语大全
2014/12/31 职场文书
布达拉宫的导游词
2015/02/02 职场文书
活动宣传稿范文
2015/07/23 职场文书
在项目中使用redis做缓存的一些思路
2021/09/14 Redis
怎么禁用Windows 11快照布局? win11不使用快照布局的技巧
2021/11/21 数码科技
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技