美文网首页
for in 和for of的区别

for in 和for of的区别

作者: keknei | 来源:发表于2021-09-28 18:44 被阅读0次

一般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索引值是字符串的数字,不能直接进行集合运算

相关文章

  • &和&&,| 和 || 的区别

    &不管前面的条件是否正确,后面都执行 &&前面条件正确时,才执行后面,不正确时,就不执行,就效率而言,这个更好。 ...

  • &和&&, |和||的区别

    &和&&的含义一样, 表示逻辑与(and), 只有第一个表达式和第二个表达式都为 true 时, 整个运算结果才为...

  • &&和&,|和||的区别

    1 &&和&的区别 1 单&时,无论左边真假,右边都会进行计算 2 双&&时,只有左边为真时,右边才会进行计算,左...

  • null 和 undefined 的区别 ==和===的区别

    1.null 和 undefined 的区别 undefined 为变量未定义的值undefined表示"缺少值"...

  • is和 == 的区别

    为什么有时写代码 is 和 == 的结果相同,有的不相同呢? 分析: 官方文档中说 is 表示的是对象标示符(ob...

  • is和==的区别

    is 和 == 的区别 id()官网描述 def id(*args, **kwargs): # real sign...

  • *和**的区别

    **两个乘号就是乘方,比如2**4,结果就是2的4次方,结果是16 一个乘号*,如果操作数是两个数字,就是这两个数...

  • ${}和#{}的区别

    ${} 注入什么就是什么,且如果是简单类型的值需要用 value 来接收#{} 将传入的数据都当成一个字符串,会对...

  • is和==的区别

    is 是比较两个引用是否指向了同一个对象(引用比较)。 == 是比较两个对象是否相等。

  • .和..的区别

    .指的是当前目录; ..指的是上级目录; cd .. 进入上级目录 open ..打开上级目录; cd .进入本级...

网友评论

      本文标题:for in 和for of的区别

      本文链接:https://www.haomeiwen.com/subject/datcnltx.html