通过实例解析JavaScript for in及for of区别


Posted in Javascript onJune 15, 2020

对数组的遍历大家最常用的就是for循环,ES5的话也可以使用forEach,ES5具有遍历数组功能的还有map、filter、some、every、reduce、reduceRight等,只不过他们的返回结果不一样。但是使用foreach遍历数组的话,使用break不能中断循环,使用return也不能返回到外层函数。

那么接下来我们一起看一下for in 和for of 的区别吧。

for in

看一个简单的例子

//for in 应用于数组
Array.prototype.sayHello = function(){
  console.log("Hello")
}
Array.prototype.str = 'world';
var myArray = [1,2,10,30,100];
myArray.name='数组';
 
for(let index in myArray){
  console.log(index);
}
//输出结果如下
0,1,2,3,4,name,str,sayHello
 
//for in 应用于对象中
Object.prototype.sayHello = function(){
  console.log('Hello');
}
Obeject.prototype.str = 'World';
var myObject = {name:'zhangsan',age:100};
 
for(let index in myObject){
  console.log(index);
}
//输出结果
name,age,str,sayHello
//首先输出的是对象的属性名,再是对象原型中的属性和方法,
//如果不想让其输出原型中的属性和方法,可以使用hasOwnProperty方法进行过滤
for(let index in myObject){
  if(myObject.hasOwnProperty(index)){
    console.log(index)
  }
}
//输出结果为
name,age
//你也可以用Object.keys()方法获取所有的自身可枚举属性组成的数组。
Object.keys(myObject)

可以看出for in 应用于数组循环返回的是数组的下标和数组的属性和原型上的方法和属性,而for in应用于对象循环返回的是对象的属性名和原型中的方法和属性。

使用for in 也可以遍历数组,但是会存在以下问题:

1.index索引为字符串型数字,不能直接进行几何运算

2.遍历顺序有可能不是按照实际数组的内部顺序

3.使用for in会遍历数组所有的可枚举属性,包括原型。例如上栗的原型方法method和name属性

Object.prototype.sayHello = function(){
  console.log('Hello');
}
var myObject = {
  name:'zhangsan',
  age:10
}
 
for(let key of myObject){
  consoloe.log(key);
}
//输出结果
//typeError
 
Array.prototype.sayHello = function(){
  console.log("Hello");
}
var myArray = [1,200,3,400,100];
for(let key of myArray){
  console.log(key);
}
//输出结果
1,200,3,400,100

for in遍历的是数组的索引(即键名),而for of遍历的是数组元素值。 所以for in更适合遍历对象,不要使用for in遍历数组。JavaScript for in 和 for of 的区别

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js实现单行文本向上滚动效果实例代码
Nov 28 Javascript
轻量级的原生js日历插件calendar.js使用指南
Apr 28 Javascript
基于JS2Image实现圣诞树代码
Dec 24 Javascript
jquery对dom节点的操作【推荐】
Apr 15 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
May 12 Javascript
javascript实现粘贴qq截图功能(clipboardData)
May 29 Javascript
基于javascript实现按圆形排列DIV元素(三)
Dec 02 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
Feb 27 Javascript
详解从Vue-router到html5的pushState
Jul 21 Javascript
javascript设计模式之迭代器模式
Jan 30 Javascript
vue proxy 的优势与使用场景实现
Jun 15 Javascript
JS获取当前时间戳方法解析
Aug 29 Javascript
vue proxy 的优势与使用场景实现
Jun 15 #Javascript
原生JS利用transform实现banner的无限滚动示例代码
Jun 15 #Javascript
koa中间件核心(koa-compose)源码解读分析
Jun 15 #Javascript
为react组件库添加typescript类型提示的方法
Jun 15 #Javascript
JavaScript中的全局属性与方法深入解析
Jun 14 #Javascript
Vue使用Three.js加载glTF模型的方法详解
Jun 14 #Javascript
浅谈Vue 自动化部署打包上线
Jun 14 #Javascript
You might like
php读取图片内容并输出到浏览器的实现代码
2013/08/08 PHP
php银联网页支付实现方法
2015/03/04 PHP
php魔术方法功能与用法实例分析
2016/10/19 PHP
PHP编程实现阳历转换为阴历的方法实例
2017/08/08 PHP
对laravel in 查询的使用方法详解
2019/10/09 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
PHP autoload使用方法及步骤详解
2020/09/05 PHP
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
2009/07/19 Javascript
AppBaseJs 类库 网上常用的javascript函数及其他js类库写的
2010/03/04 Javascript
JavaScript简单实现鼠标移动切换图片的方法
2016/02/23 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
又一款js时钟!transform实现时钟效果
2016/08/15 Javascript
利用JS实现简单的日期选择插件
2017/01/23 Javascript
Vue AST源码解析第一篇
2017/07/19 Javascript
JS中的BOM应用
2018/02/02 Javascript
es6新特性之 class 基本用法解析
2018/05/05 Javascript
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
tracking.js页面人脸识别插件使用方法
2020/04/16 Javascript
[01:06:12]VP vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
详解Python 实现元胞自动机中的生命游戏(Game of life)
2018/01/27 Python
python中返回矩阵的行列方法
2018/04/04 Python
python获取服务器响应cookie的实例
2018/12/28 Python
对django后台admin下拉框进行过滤的实例
2019/07/26 Python
Python 分发包中添加额外文件的方法
2019/08/16 Python
Python标准库shutil模块使用方法解析
2020/03/10 Python
美国领先的户外服装与装备用品店:Moosejaw
2016/08/25 全球购物
LEGO玩具英国官方商店:LEGO Shop GB
2018/03/27 全球购物
女方婚礼新郎答谢词
2014/01/11 职场文书
小组名称和口号
2014/06/09 职场文书
汉语言文学毕业求职信
2014/07/17 职场文书
物业保洁员岗位职责
2015/02/13 职场文书
房地产财务经理岗位职责
2015/04/08 职场文书
承诺书模板大全
2015/05/04 职场文书
pytorch中的numel函数用法说明
2021/05/13 Python
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android