详谈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 相关文章推荐
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
Feb 03 Javascript
基于jQuery实现图片的前进与后退功能
Apr 24 Javascript
浅谈JS日期(Date)处理函数
Dec 07 Javascript
javascript变量声明实例分析
Apr 25 Javascript
正则表达式优化JSON字符串的技巧
Dec 24 Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
Sep 14 Javascript
jQuery点击导航栏选中更换样式的实现代码
Jan 23 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
Apr 25 Javascript
微信小程序如何使用canvas二维码保存至手机相册
Jul 15 Javascript
VUE写一个简单的表格实例
Aug 06 Javascript
js实现录音上传功能
Nov 22 Javascript
vue+openlayers绘制省市边界线
Dec 24 Vue.js
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
冰滴咖啡制作步骤
2021/03/03 冲泡冲煮
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
Laravel源码解析之路由的使用和示例详解
2018/09/27 PHP
JavaScript 特殊字符
2007/04/05 Javascript
JQuery之拖拽插件实现代码
2011/04/14 Javascript
jQuery右键菜单contextMenu使用实例
2011/09/28 Javascript
JS正则表达式验证数字代码
2014/01/28 Javascript
php+js实现倒计时功能
2014/06/02 Javascript
JS中使用apply方法通过不同数量的参数调用函数的方法
2016/05/31 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
原生js仿jquery一些常用方法(必看篇)
2016/09/20 Javascript
AngularJS2中一种button切换效果的实现方法(二)
2017/03/27 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
2017/03/31 Javascript
windows下vue-cli及webpack搭建安装环境
2017/04/25 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
node.js中cluster的使用教程
2017/06/09 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
2018/03/15 Javascript
在小程序/mpvue中使用flyio发起网络请求的方法
2018/09/13 Javascript
JavaScript JMap类定义与使用方法示例
2019/01/22 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
2019/04/26 Javascript
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
[02:31]DOTA2帕克 英雄基础教程
2013/11/26 DOTA
Python中的集合类型知识讲解
2015/08/19 Python
Python中xrange与yield的用法实例分析
2017/12/26 Python
python 将对象设置为可迭代的两种实现方法
2019/01/21 Python
python的schedule定时任务模块二次封装方法
2019/02/19 Python
Python3 Tkinter选择路径功能的实现方法
2019/06/14 Python
在python中计算ssim的方法(与Matlab结果一致)
2019/12/19 Python
用css3写出气球样式的示例代码
2017/09/11 HTML / CSS
如何写好自荐信
2014/04/07 职场文书
初中生散播谣言检讨书
2014/11/17 职场文书
2014年电厂个人工作总结
2014/11/27 职场文书
2014学生会工作总结报告
2014/12/02 职场文书
中学生思想品德评语
2014/12/31 职场文书
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL