当前位置: 代码迷 >> 综合 >> 遍历对象方法for in 和for of的区别
  详细解决方案

遍历对象方法for in 和for of的区别

热度:3   发布时间:2024-02-07 21:00:51.0

for in可以遍历对象和数组

使用for in遍历时,会有以下问题

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

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

  3. 使用for-in会遍历数组所有的可枚举属性,包括原型方法method和name属性都会被遍历出来,通常需要配合hasOwnProperty()方法判断某个属性是否该对象的实例属性,来将原型对象从循环中剔除

所以for-in更适合遍历对象且配合hasOwnProperty()方法一起使用,通常是建议不要使用for-in遍历数组

for of 只能遍历数组,不能遍历对象

for of可以简单有效的遍历数组,并且不会遍历原型上的method和name

如果想要遍历,可通过Object.keys()把对象转化为数组再遍历

他有如下优点:

  1. 这是最简洁、最直接的遍历数组元素的语法

  2. 这个方法避开了for-in循环的所有缺陷

  3. 与forEach()不同的是,它可以正确响应break、continue和return语句

简单总结就是

  1. for in遍历的是数组的索引(即键名),而for of遍历的是数组元素值
  2. for-in得到的是对象的key或数组、字符串的下标
  3. for-of得到的是对象的value或数组、字符串的值,另外还可以用于遍历Map和Set

 

  相关解决方案