for in 和for of的区别

2021-09-28  本文已影响0人  keknei

一般for in遍历的是对象或者数组的索引(键名),而for of遍历的是数组的元素值,不包括数组的原型

  1. for of
    1. for of适合遍历循环数组/字符串/map/set等拥有迭代器对象的集合,但是不能遍历普通的对象,因为没有迭代器,会报错obj is not iterable
     let arr=["a","b","c"];
     let obj={
       name:"张三",
       age:18,
       job:"IT"
     };
    
     for (let value of arr){
       console.log(value);//a b c
     }
    
     //for of不能遍历普通的对象,因为没有迭代器,会报错
     for (let value of obj){
       console.log(value)//obj is not iterable
     }
    
    1. for of遍历不能获取index索引值,可以先将数组转成map结构,再用for of遍历这个map,就可以获取索引index,值value
    let arr=["a","b","c"];
    for (let [key,value] of new Map(arr.map((item,index)=> [index,item]))){
        console.log(key,value)
     }
    
    1. for offorEach不同的是,它可以正确的响应break,continue,return
  2. for in有三个缺点,所以for in不适合遍历数组,适合遍历对象
    1. 顺序可能不会按照实际数组的内部顺序
    2. for in会遍历数组所有的可枚举性,包括原型
    3. index索引值是字符串的数字,不能直接进行集合运算
上一篇 下一篇

猜你喜欢

热点阅读