JS---遍历数组、对象的方式for...in/for...of

23 阅读1分钟

遍历数组

for...of遍历值

  • 用途:遍历可迭代对象(Iterable)的值
  • 适用对象:数组、字符串、Map、Set、arguments等实现了Symbol.iterator接口的对象
  • 遍历内容:对象的值(value)
var arr = ["a","b","c"]
for(let item of arr){
  cpnsole.log(item)
}
// a,b,c

map、forEach、reducer

遍历对象

for...in循环遍历对象自身和继承的可枚举属性(不含Symnol属性)

  • 用途:遍历对象的可枚举属性(包括自身属性和原型链上的属性)
  • 适用对象:普通对象(Object)
  • 遍历内容:对象的键(key),即属性名
var obj = {a:1,b:2,c:3}

for(var i in obj){
  console.log('键名:',i);
  console.log('键值:',obj[i])
}
// 键名: a
// 键值: 1
...

Object.keys()返回一个数组,包括对象自身的所有可枚举属性的键名

for...in 和for...of的区别

使用场景不同

  1. for...in 适用于可枚举属性,例如对象、数组、字符串
  2. for...of 适用于可迭代对象,例如Array、String、Map、Set、函数的arguments对象、nodeList对象

遍历范围不一样

  1. for...in 能遍历自身的可枚举属性和原型上的可枚举属性
  2. for...of 一般只能遍历自身的可枚举属性(具体和迭代器内部的实现有关)

得到的结果不一样

  1. for...in 得到的是key(并且不能保证顺序)
  2. for...of 得到的是value(具体和迭代器内部的实现有关)