for...in和 for...of
在对数据或者对象进行遍历时,经常使用的两种方法是 for...in
和 for...of
,那么这两种方法有什么区别呢?
for…in
for...in
语句以任意顺序遍历一个对象的除Symbol以外的可枚举属性。
语法:
for (variable in object) {// statement
}
说明:
- variable
在每次迭代时,variable会被赋值为不同的属性名。 - object
非Symbol类型的可枚举属性被迭代的对象。
for…in 循环只遍历可枚举属性(包括它的原型链上的可枚举属性)。像 Array 和 Object 使用内置构造函数所创建的对象都会继承自 Object.prototype 和 String.prototype 的不可枚举属性,例如 String 的 indexOf() 方法或 Object的toString()方法。
循环将遍历对象本身的所有可枚举属性,以及对象从其构造函数原型中继承的属性(更接近原型链中对象的属性覆盖原型属性)。
for…in 与数组迭代
数组索引只是具有整数名称的枚举属性,并且与通用对象属性相同。不能保证 for … in 将以任何特定的顺序返回索引。
for … in 循环语句将返回所有可枚举属性,包括非整数类型的名称和继承的那些。因为迭代的顺序是依赖于执行环境的,所以数组遍历不一定按次序访问元素。
因此当迭代访问顺序很重要的数组时,最好用整数索引去进行for循环(或者使用 Array.prototype.forEach() 或 for…of 循环)。
查看 MDN 对 for…in 的解释
for…of
for...of
语句在可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句。
语法:
for (variable of iterable) {//statements
}
说明:
- variable
在每次迭代中,将不同属性的值分配给变量。 - iterable
被迭代枚举其属性的对象。
查看 MDN 文档对 for…of 的解释
总结
for...in
和 for...of
语句都可以迭代一些东西。它们之间的主要区别在于它们的迭代方式。
for...in
语句以任意顺序迭代对象的可枚举属性。
其中item为迭代数据的Key,如果迭代的是对象,则item为对象的属性,如果迭代的是数组,则item为数组的下标。for...of
语句遍历可迭代对象定义要迭代的数据。
其中的item为迭代数据的value。
简而言之,for…in 遍历键名,for…of 遍历键值。
—— END ——
相关文章:

J2EE复习(二)XML
2019独角兽企业重金招聘Python工程师标准>>> XML(eXtensible Markup Language)简介XML 可扩展标记语言XML是一种您可以用来创建自己的标记的标记语言。XML由万维网协会(W3C)创建 XML和Html比较比较内容 …

Angular 路由
Angular 路由 简单路由配置 每个带路由的 Angular 应用都有一个Router(路由器)服务的单例对象。 当浏览器的 URL 变化时,路由器会查找对应的 Route(路由),并据此决定该显示哪个组件。 路由器需要先配置才…

leecode第二十题(有效的括号)
class Solution { public:bool isValid(string s) {int start0,ends.size()-1;if(end-1)//万万没想到,他把空字符串当成true了return true;int ss[end1];//歪方法,把左括号全部<0,右括号都>0,且同类型符号绝对值一样for(int…

开始Hibernate介绍
1.介绍 一个框架 一个Java领域内的持久化框架 一个ORM框架 2.持久化 和数据库相关的各种操作 保存 更新 删除 查询 加载:根据特定的OID,把一个对象从数据库加载到你内存中。 OID:为了在系统中找到所需的对象,需要为每一个对象分配…

STL容器[06]
Linux文件锁学习笔记 转载于:https://www.cnblogs.com/motadou/archive/2009/11/25/1610328.html

ASP.NET 2.0在SQL Server 2005上自定义分页
这篇文章讲述了如何利用SQL Server 2005的新特性来简单高效的实现分页。对于那些暂时还没用到SQL Server2005的人们,请看在大规模数据中的高效分页方法。如果需要,这篇文章会补上这里讲到的内容。 出处:http://aspnet.4guysfromrolla.com/demos/printPag…

简单安装与使用composer
1、下载composer.exe工具,然后进行安装 这一步需要找到你使用的php版本文件 2、windowsr cmd 输入composer 安装中国镜像,提高使用效率 https://pkg.phpcomposer.com/ 赋值到cmd中执行即可。 1、找到自己的php环境地址并进入,如…

[推荐]C#快速开发3d游戏工具--Unity3d
最近有幸接触了一点Unity3d的东西,和大家分享一下。 Unity3d 简介 是一款可视化的,3d游戏开发软件。可以进行手动绘制3d场景,自己添加摄像机角度,3d模型设计,事件触发,对于园子里大家很感兴趣的地方在于&am…

Angular 可观察对象(Observable)
可观察对象(Observable) 可观察对象支持在应用的发布者和订阅者之间传递消息。 可观察对象是声明式的 —— 即定义的用于发布值的函数,在有消费者订阅它之前,这个函数不会实际执行。 可观察对象可能会发出的三种通知: 通知类型说明next必要…

select框高度问题
<div class"article-start-box"> <span class"categery">分类栏目</span> <select style"position: absolute;z-index: 1;margin-left: 40px;" class"choose" οnmοusedοwn"if(this.options.length>6)…

c#技巧教程(连载)
c#技巧教程系列_1 http://www.rayfile.com/files/e03d922e-2418-11de-858a-0019d11a795f/ 转载于:https://www.cnblogs.com/manwu2008/archive/2009/04/08/1431823.html

JavaScript 数据拷贝
JavaScript 数据类型 基本数据类型:字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。引用数据类型:对象( Object )、数组( Array ) 和 方法…

Java链表和递归
删除链表的指定元素: public class ListNode {public int val;public ListNode next;public ListNode(int x){valx;}//链表节点的构造函数//使用arr为参数,创建一个链表,当前的ListNode为链表头节点public ListNode(int arr[]){if(arrnull||a…

设计模式笔记(9)---组合模式(结构型)
Gof定义 将对象组合成树形结构以表示“部分--整体”的层次结构。Composite使得用户对单个对象和组合对象使用具有一致性。 在面向对象系统中,我们经常会遇到一类具有”容器“特征的对象---即他们在充当对象的同时,又是其他对象的容器。比如在一些管理系统…

npm install出现的错误
在使用cnpm 安装node依赖包的时候,出现上述错误,网上搜索,说是有两个解决方案: 虽然提示不适合Windows,但是问题好像是sass loader出问题的。所以只要执行下面命令即可; 方案一: cnpm rebuild n…

射频放大器芯片3阶截点计算与芯片选择
在选用射频放大器芯片时,除了需要考虑增益、噪声指数等指标外,线性指标也是必须关注的参数。在射频或微波多载波通讯系统中,三阶交调截取点IP3(Third-order Intercept Point)是一个衡量线性度或失真的重要指标。交调失…

Python-接口自动化(二)
python基础知识(二) (二)常用控制流 1、控制语句 分支语句:起到一个分支分流的作用,类似马路上的红绿灯 循环语句:for while 可以使代码不断重复的执行 2、判断语句:关键字是if..eli…

Angular CLI在线安装和离线安装
Angular CLI 安装方式 默认已经安装了 Node.js 和 npm 包管理器。 1. 在线安装 可以使用外网的情况下,可以使用在线安装的方式。 要使用 npm 命令全局安装 CLI,请打开终端/控制台窗口,输入如下命令: npm install -g angular/…

近来工作和面试一些人的感受(原)
最近公司招聘,面试了很多人,有牛人 - 无所不能的,自认为没必要再提高的牛人,有硕士,有啥都不懂乱投简历的,有简历项目经验写几十个的各种技术都精通的,还有水平一般却要求薪水很高的,…

关于vue+webpack的一点配置
开发环境跨域访问: config/index.js 增加proxyTable里的内容,然后可以在config/dev.env.js中设置访问地址的origin为"/api" 本地图片访问问题: 一般,放在static下,图片访问地址设置成‘./static/....’ js等…

2.5Gb/s混合集成光发射机
0、引言<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />在信息呈爆炸式发展的今天,光纤通信已成为现代信息网络的主要传输手段,近几年国家干线网大部分仍采用2.5Gb/s系统, 10Gb/s系统正积极研制开发&…

laravel5.8的使用
首先,确定电脑已经安装了composer。最好是全局安装 然后打开phpstorm的控制台: composer create-project --prefer-dist laravel/laravel blog另外一种方式步骤多。然后中间配置的地方又多,不推荐。 artisan 在Laravel根目录下运行࿱…

npm install 报错 npm ERR! code Z_BUF_ERROR 问题解决
问题描述: 使用npm install命令安装依赖时,出现错误,报错信息如下: npm ERR! code Z_BUF_ERROR npm ERR! errno -5 npm ERR! zlib: unexpected end of file解决方式: 使用如下命令安装淘宝镜像后,重新执…

BZOJ——1202: [HNOI2005]狡猾的商人
http://www.lydsy.com/JudgeOnline/problem.php?id1202 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4075 Solved: 1958[Submit][Status][Discuss] Description 刁姹接到一个任务,为税务部门调查一位商人的账本,看看账本是不是伪造的。账本上记录…

ASP.NET禁用视图状态
1、站点禁用视图状态<configuration> <system.web> <pages enableViewState"false"/> </system.web> </configuration>2、页面禁用视图状态<% Page EnableViewState"false" %>转载于:https://www.cnb…

Virtual PC磁盘的最佳压缩方式
随着vpc不断的使用,vpc的磁盘就会一天一天的增大,于是你试着去把那些在vpc上面的软件都删除了,可是发现体积仍然没有什么改观,我还尝试过将系统都格式化了,仍然没有什么太大的变化. 经过苦苦搜寻还是得到了大数人提供的解决办法:首先启动虚拟机进到系统,然后装载母机vpc安装目录…

OO第一次总结
一.基于度量的程序结构分析 在进行分析之前,先解释一下以下几个缩写: LOC:代码行数 CC:圈复杂度,反映了程序中if/while等判定条件的数量,越高意味着代码越可能质量低且难以测试、维护。 PC&…

python学习笔记(一)之入门
1、python的安装 官网下载.exe文件直接安装即可,在安装过程中选择加入环境变量,就不用在安装后再去增添环境变量了。 本文选择的是python3.6版本,没有选择2.7版本。 2、启动python解释器和运行.py文件 安装过程中选择创建桌面图标连接&#x…

丽水风光(二)—劫色“古堰画乡”
丽水风光 (二) 劫色古堰画乡 驱车从鸥江到古堰画乡大约二十分钟。一路由同学L老弟相陪,车刚停在江边,我就被美景陶醉,撇下老同学,旁若无人地与X兄一边卡嚓卡嚓去了,一副“…

爱情神话:庄妃用美色套牢洪承畴之谜
题记:庄妃,一个蒙古族的美丽,用她的美色俘获了大明王朝铁血将军洪承畴之心,不仅为满清开国立下了不世之功,而且也打造了一个千古流传的爱情神话。庄妃,孝庄文皇后,博尔济吉特氏,蒙古…