for in的详细讲解, for in遍历数组的毛病

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

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

3.使用for in会遍历数组[所有的可枚举属性]。
包括[原型]。例如上栗的[原型方法]method和[name]属性 所以for in更适合遍历对象,尽量不要使用for in遍历数组。

for in中index索引为字符串型数字

var myArray=[1,2,4,5,6,7]

myArray.name="name数组"
for (var index in myArray) {
//这里可以说明是字符串型数字
console.log("字符串型数字===>", index +1)
//也说明了会遍历【可枚举属性】
console.log(myArray[index]);
}

for in中会遍历所有的可枚举属性

Object.prototype.say=function(){
  console.log('say');
}
var myObject={
  a:1,
  b:2,
  c:3
} for (var key in myObject) {
console.log('key值',key);
}

for in不遍历原型属性和原型方法

有些时候,不遍历原型属性和原型方法。
我们可以使用Object.hasOwnPropery(keyName)
hasOwnProperty()用于判断一个对象自身(不包括原型链)是否具有指定的属性。如果有,返回true,否则返回false。 Object.prototype.say=function(){
  console.log('say');
}
var myObject={
  name:'范轻舟',
  sex:'男',
  age:25
}
// 往对象上添加属性
myObject.likes='写代码'
// 往对象上添加属性
myObject['height']='1.80cm'
console.log(myObject )
for (var key in myObject) {
  if(myObject.hasOwnProperty(key)){
    console.log(key);
  }
}

获取对象上的所有key值

通过ES5的Object.keys(myObject)
获取[对象实例]【属性】组成的数组,不包括原型方法和属性 Object.prototype.say=function(){
  console.log('say');
}
var myObject={
  name:'范轻舟',
  sex:'男',
  age:25
}
let allkesy=Object.keys(myObject)
console.log( '获取对象上的所有key值', allkesy)
输出 ["name", "sex", "age"]

for-of遍历数组对象

let arr=[
{name:'张三',age:13},
{name:'张三',age:13},
{name:'张三',age:13}
] for(let cont of arr){
//输出 {name:'张三',age:13},
console.log(cont);
}

for-of遍历字符串

let  strCont="你好啊!Javascript"
for (const item of strCont) {
console.log(item);
}

for-of遍历数组新增一个key值

let arr=[
{name:'张三',age:13},
{name:'张三',age:13},
{name:'张三',age:13}
] for(let cont of arr){
cont['newkeys']=''
}

区别

1==》for in遍历的是数组的索引(即键名)。
而for of遍历的是数组元素值。 2==》for in 是es5中有的,for of是es6的 3==》for-in是为遍历对象而设计的,不适用于遍历数组。
它可以正确响应break、continue和return语句
for-in遍历数组的缺点:
因为for-in遍历的index值"0","1","2"等是字符串而不是数字
for-in循环存在缺陷:会遍历对象自身的和继承的可枚举属性(不含Symbol属性) 3==》for-of这个方法避开了for-in循环的所有缺陷
适用遍历数/数组对象/字符串/map/set等拥有迭代器对象的集合
它可以正确响应break、continue和return语句

最后一句话

for in遍历对象
for of比那里数组

参考的地址:https://www.cnblogs.com/zjx304/p/10687017.html

js中for in和for of详细讲解的更多相关文章

  1. C++中的覆盖与隐藏(详细讲解)

    C++类中覆盖与隐藏一直是一个容易理解出错的地方,接下来我就详细讲解一下区别在何处 覆盖指的是子类覆盖父类函数(被覆盖),特征是: 1.分别位于子类和父类中 2.函数名字与参数都相同 3.父类的函数是 ...

  2. vue.js中ref及$refs的使用及讲解

    关于ref和$refs的用法及讲解,vue.js中文社区( https://cn.vuejs.org/v2/api/#ref )是这么讲解的: ref 被用来给元素或子组件注册引用信息,引用信息将会注 ...

  3. Java中数据库连接池原理机制的详细讲解以及项目连接数据库采用JDBC常用的几种连接方式

    连接池的基本工作原理 1.基本概念及原理 由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理.我们知道,对于共享资源,有一个很著名的设计模式:资源池(Resource Pool).该模式 ...

  4. Java中数据库连接池原理机制的详细讲解

    连接池的基本工作原理 1.基本概念及原理 由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理.我们知道,对于共享资源,有一个很著名的设计模式:资源池(Resource Pool).该模式 ...

  5. Java中数据库连接池原理机制的详细讲解(转)

    连接池的基本工作原理 1.基本概念及原理 由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理.我们知道,对于共享资源,有一个很著名的设计模式:资源池 (Resource Pool).该模 ...

  6. JS中的数学计算<之简单实例讲解>

    1.取余数   % var a=10%3; //a=1 2.取绝对值  Math.abs() var a=Math.abs(-102.1); var b=Math.abs(102.1); //a=10 ...

  7. js中的json对象详细介绍

    JSON一种简单的数据格式,比xml更轻巧,在JavaScript中处理JSON数据不需要任何特殊的API或工具包,下面为大家详细介绍下js中的json对象, 1.JSON(JavaScript Ob ...

  8. js中推断对象详细类型

    大家可能知道js中推断对象类型能够用typeof来推断. 看以下的情况 <script> alert(typeof 1);//number alert(typeof "2&quo ...

  9. 简述JS中 appy 和 call 的详细用法

    Apply 和 Call 两个老生常言的方法,使用过程的一些细节还是有很大的异同,具体使用情况可以参照下面例子详细回顾一下. 区别和详解:js中call()和apply()的用法 1.关于call() ...

  10. javaScript系列:js中获取时间new Date()详细介绍

    var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份(4位,1970-????)m ...

随机推荐

  1. 从 Uber 数据泄露事件我们可以学到什么?

    Uber 数据泄露始于一名黑客从暗网市场购买属于一名 Uber 员工的被盗凭证.最初尝试使用这些凭据连接到 Uber 的网络失败,因为该帐户受 MFA 保护.为了克服这一安全障碍,黑客通过 What' ...

  2. 火山引擎DataLeap一站式数据治理解决方案及平台架构

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 在字节跳动内部,DataLeap数据平台数据治理团队致力于建立一站式.全链路的数据治理解决方案平台. 数据治理的概 ...

  3. Chrome浏览器导出HTTPS证书

    点证书小锁 进入证书界面 到详情中,导出证书

  4. Linux 安装Jupyter notebook 并开启远程访问

    一. Ubuntu下安装jupyter notebook 1. 使用Anaconda安装 conda install jupyter notebook 2. 使用pip安装 pip install j ...

  5. Codeforces Round #739 (Div. 3) 个人题解(A~F2)

    比赛链接:Here 1560A. Dislike of Threes Description 找出第 $k$ 大的不可被 $3$ 整除以及非 $3$ 结尾的整数 直接枚举出前 1000 个符合条件的数 ...

  6. Codeforces Round #664 题解(A ~ C)

    1395A - Boboniu Likes to Color Balls 如果在r,b,g,w中小于或等于一个奇数,则可以将其定为回文. 否则,请进行一次操作(如果可以),然后检查上述情况. 进行多次 ...

  7. AtCoder Beginner Contest 174 个人题解(ABC水题,D思维,E题经典二分,F离线树状数组)

    做完本期以后,最近就不会再发布 AtCoder 的往届比赛了(备战蓝桥杯ing) 补题链接:Here ABC题都是水题,这里直接跳过 D - Alter Altar 题意:一个R-W串,可以进行两种操 ...

  8. linux ntp时间服务器搭建

    工作中经验遇到搭建时间服务器的任务,如何搭建网上找的例子总是有些许问题,如下自己动手操作一遍总结一下,方便自己和后来人直接上手使用. 准备工作:192.168.0.1   服务端: ntp服务器192 ...

  9. vue-devtools调试工具

  10. python连接liunx主机:paramiko类基本操作

    一.下载paramiko类 pip install paramiko 二.实现过程 # coding utf-8# author:Mr.white import paramiko # 创建SSHCli ...