对数组的遍历大家最常用的就是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 的区别
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍通过实例解析synchronized和lock区别,包括了通过实例解析synchronized和lock区别的使用技巧和注意事项,需要的朋友参考一下 1,原始构成 synchronized是关键字,属于JVM层面,通过wait,notify和notifyAll来调度线程。 Lock是具体类,是api层面的锁。 2,使用方法 synchronized不需要用户手动去释放锁, 当sync
本文向大家介绍通过实例了解JavaBean开发及使用过程解析,包括了通过实例了解JavaBean开发及使用过程解析的使用技巧和注意事项,需要的朋友参考一下 一、JavaBean简介 JavaBean是使用Java语言开发的一个可重用的组件,在JSP的开发中可以使用JavaBean减少重复代码,使整个JSP代码的开发更简洁。JSP搭配JavaBean来使用,有以下的优点: 1.可将HTML和Java
本文向大家介绍通过实例解析javascript Date对象属性及方法,包括了通过实例解析javascript Date对象属性及方法的使用技巧和注意事项,需要的朋友参考一下 日常生活中,各种形式的时间字符到处都是。时间观念的产生,时间单位、计时工具的发明,给人类带来的变化实在一言难尽。今天就来谈谈日期那些事儿。一起来看看 JavaScript 中的日期对象 Date。 获取月份天数 Date 第
本文向大家介绍通过实例解析java String不可变性,包括了通过实例解析java String不可变性的使用技巧和注意事项,需要的朋友参考一下 一、原理 1、不变模式(不可变对象) 在并行软件开发过程中,同步操作似乎是必不可少的。当多线程对同一个对象进行读写操作时,为了保证对象数据的一致性和正确性,有必要对对象进行同步。而同步操作对系统性能是相当的损耗。为了能尽可能的去除这些同步操作,
本文向大家介绍Google Maps基础及实例解析,包括了Google Maps基础及实例解析的使用技巧和注意事项,需要的朋友参考一下 Google Maps 基础 创建一个简单的 Google 地图 现在让我们创建一个简单的 Google 地图。 以下是显示了英国伦敦的 Google 地图: 实例 实例效果图(可以拷贝直接运行,当然你要能够访问Google) 实例解析 我们以以上实例来解析 Go
本文向大家介绍Spring实例化bean过程解析及完整代码示例,包括了Spring实例化bean过程解析及完整代码示例的使用技巧和注意事项,需要的朋友参考一下 提出问题 Spring中Bean的实例化是Bean生命周期的一个重要环节,通常Bean初始化后将不再改变。 那么Spring实例Bean的过程到底是怎么样的呢?! Spring实例化bean过程分析 要想获取到一个bean对象,得先通过Be
本文向大家介绍iOS-GCD使用详解及实例解析,包括了iOS-GCD使用详解及实例解析的使用技巧和注意事项,需要的朋友参考一下 iOS-GCD使用详解 前言 对初学者来说,GCD似乎是一道迈不过去的坎,很多人在同步、异步、串行、并行和死锁这几个名词的漩涡中渐渐放弃治疗。本文将使用图文表并茂的方式给大家形象地解释其中的原理和规律。 线程、任务和队列的概念 异步、同步 & 并行、串行的特点 一条重要的
本文向大家介绍通过实例解析JavaScript常用排序算法,包括了通过实例解析JavaScript常用排序算法的使用技巧和注意事项,需要的朋友参考一下 冒泡排序 冒泡排序是我们在编程算法中,算是比较常用的排序算法之一,在学习阶段,也是最需要接触理解的算法,所以我们放在第一个来学习。 算法介绍: 比较相邻的两个元素,如果前一个比后一个大,则交换位置。第一轮把最大的元素放到了最后面。由于每次排序最后一