通过实例解析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获取IUSR_机器名和IWAM_机器名帐号的密码
Dec 06 Javascript
js 操作select相关方法函数
Dec 06 Javascript
javascript屏蔽右键代码
May 15 Javascript
jquery和js实现对div的隐藏和显示方法
Sep 26 Javascript
JS实现简单路由器功能的方法
May 27 Javascript
字符串反转_JavaScript
Apr 28 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
Jan 20 Javascript
基于hover的用法实例(推荐)
Jul 04 Javascript
关于Vue在ie10下空白页的debug小结
May 02 Javascript
微信小程序之onLaunch与onload异步问题详解
Mar 28 Javascript
js实现点击烟花特效
Oct 14 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
Feb 14 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
第十四节--命名空间
2006/11/16 PHP
FireFox浏览器使用Javascript上传大文件
2013/10/30 PHP
PHP CURL使用详解
2019/03/21 PHP
PHP连接MySQL数据库三种实现方法
2020/12/10 PHP
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
2010/09/15 Javascript
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
创建、调用JavaScript对象的方法集锦
2014/12/24 Javascript
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
2015/01/01 NodeJs
jquery验证邮箱格式并显示提交按钮
2015/11/07 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
2016/06/08 Javascript
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
angular中如何绑定iframe中src的方法
2019/02/01 Javascript
VUE组件中的 Drawer 抽屉实现代码
2019/08/06 Javascript
微信小程序实现横向滚动导航栏效果
2019/12/12 Javascript
[01:10]DOTA2次级职业联赛 - U5战队宣传片
2014/12/01 DOTA
python通过自定义isnumber函数判断字符串是否为数字的方法
2015/04/23 Python
Python语言的变量认识及操作方法
2018/02/11 Python
在python环境下运用kafka对数据进行实时传输的方法
2018/12/27 Python
python程序快速缩进多行代码方法总结
2019/06/23 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
Pandas替换及部分替换(replace)实现流程详解
2020/10/12 Python
python中二分查找法的实现方法
2020/12/06 Python
用HTML5制作视频拼图的教程
2015/05/13 HTML / CSS
HTML5 Canvas入门学习教程
2016/03/17 HTML / CSS
手机端用rem+scss做适配的详解
2017/11/15 HTML / CSS
瑞典时尚耳机品牌:Urbanears
2017/07/26 全球购物
全世界最美丽的四星和五星级酒店预订:Prestigia.com
2017/11/15 全球购物
小学门卫岗位职责
2013/12/17 职场文书
运动会广播稿50字
2014/01/26 职场文书
总经理文秘岗位职责
2014/02/03 职场文书
预备党员2014全国两会学习心得体会
2014/03/10 职场文书
《云房子》教学反思
2014/04/20 职场文书
领导干部对照检查材料
2014/08/24 职场文书
2015年敬老院工作总结
2015/05/18 职场文书
金砖之国观后感
2015/06/11 职场文书