通过实例解析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 相关文章推荐
javascript 写类方式之六
Jul 05 Javascript
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
Oct 26 Javascript
基于jQuery的倒计时插件代码
May 07 Javascript
js showModalDialog参数的使用详解
Jan 07 Javascript
JavaScript中对象property的删除方法介绍
Dec 30 Javascript
浅谈vue实现数据监听的函数 Object.defineProperty
Jun 08 Javascript
Angular设置别名alias的方法
Nov 08 Javascript
详解bootstrap-fileinput文件上传控件的亲身实践
Mar 21 Javascript
javascript操作元素的常见方法小结
Nov 13 Javascript
JS 设计模式之:单例模式定义与实现方法浅析
May 06 Javascript
Vue微信公众号网页分享的示例代码
May 28 Javascript
Vue axios 跨域请求无法带上cookie的解决
Sep 08 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连接SQLServer2005 的问题解决方法
2010/07/19 PHP
php实现12306余票查询、价格查询示例
2014/04/17 PHP
thinkphp中空模板与空模块的用法实例
2014/11/26 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
windows7配置Nginx+php+mysql的详细教程
2016/09/04 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
从零开始学习jQuery (十) jQueryUI常用功能实战
2011/02/23 Javascript
css+js实现部分区域高亮可编辑遮罩层
2014/03/04 Javascript
javascript 小数取整简单实现方式
2014/05/30 Javascript
JavaScript italics方法入门实例(把字符串显示为斜体)
2014/10/17 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
2014/10/30 Javascript
浅谈nodeName,nodeValue,nodeType,typeof 的区别
2015/01/13 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
react-redux中connect()方法详细解析
2017/05/27 Javascript
彻底揭秘keep-alive原理(小结)
2019/05/05 Javascript
微信小程序canvas截取任意形状的实现代码
2020/01/13 Javascript
Python闭包实现计数器的方法
2015/05/05 Python
Python数组遍历的简单实现方法小结
2016/04/27 Python
使用Python读写及压缩和解压缩文件的示例
2016/07/08 Python
Python解决N阶台阶走法问题的方法分析
2017/12/28 Python
python绘制散点图并标记序号的方法
2018/12/11 Python
解决python线程卡死的问题
2019/02/18 Python
python实现抠图给证件照换背景源码
2019/08/20 Python
纯CSS3实现地球自转实现代码(图文教程附送源码)
2012/12/26 HTML / CSS
Linux上比较文件的命令都有哪些
2013/09/28 面试题
关于幼儿的自我评价
2013/12/18 职场文书
服务员自我评价
2014/01/25 职场文书
2015年中学元旦晚会活动方案
2014/12/09 职场文书
MySQL Shell的介绍以及安装
2021/04/24 MySQL
Django给表单添加honeypot验证增加安全性
2021/05/06 Python
详解JAVA的控制语句
2021/11/11 Java/Android