zoukankan      html  css  js  c++  java
  • 数组遍历forEach,for in,for of和for优缺点

    forEach(value,index,a)

    定义:用于调用数组的每个元素,并将元素传递给回调函数

    优点:便利的时候更加简洁,效率和for循环相同,不用关心集合下标的问题,减少了出错的效率

    缺点:不能同时遍历多个集合,在遍历的时候无法修改和删除集合数据,方法不能使用break,continue语句跳出循环,或者使用return从函数体返回,对于空数组不会执行回调函数

    //我们先用它来遍历数组
      let arry=[9,8,7,6,5,4]
      array.forEach(function(value,index,arr){
          console.log(value)
      })
    //输出结果为9 8 7 6 5 4
    
    //forEach不可以遍历对象,这也是它和for in的一个区别
       let obj={a:1,b:2,c:3,d:4}
       obj.forEach(function(value,index,oObj){
           console.log(value)
       }
    //输出结果会是obj.forEach is not a function,

    for in(大部分用于遍历对象)

    定义:用于循环遍历数组或对象属性,for in循环里面的index是string类型的,代码每执行一次,就会对数组的元素或者对象的属性进行一次操作

    优点:可以遍历数组的键名,遍历对象简洁方便

    缺点:某些情况下,会出现随机顺序的遍历,因为里面的值是string类型,所以增加了转换过程,因此开销较大

    //遍历对象
       let person={name:"老王",age:23,city:"大唐"}
       let text=""
       for (let i in person){
          text+=person[i]
       }
       输出结果为:老王23大唐
    
    //遍历数组
       let arry=[1,2,3,4,5]
       for (let i in arry){
            console.log(arry[i])
        }

    for of:(可遍历array,object,string,map,set等)

    优点:避免了for in的所有缺点,可以使用break,continue和return,支持数组的遍历、类似数组的对象遍历、字符串的遍历,最直接的遍历数组的语法支持map和set对象遍历

    缺点:不适用于处理原有的原生对象(原生对象是一个子集,包含一些在运动过程中动态创建的对象)

    //遍历数组
       let arr=["nick","freddy","mike","james"];
        for (let item of arr){
            console.log(item)
        }
    //暑促结果为nice freddy mike james
    
    
    //遍历对象
       let person={name:"老王",age:23,city:"唐山"}
       for (let item of person){
            console.log(item)
        }
    //我们发现它是不可以的
    //但是它和forEach有个解决方法,结尾介绍

    for

    优点:程序简洁,结构清晰,循环初始化,循环变量化,循环体和循环条件位置突出

    缺点:结构比while循环复杂,容易出编码错误

    //首先它和forEach,forof一样不可以遍历对象
    //解决办法:就是把对象先转化为数组类型- -
    //有一个对象:
         let obj={a:1,b:2,c:3}
    //用Object.keys属性转化
         let obj2=Object.keys(obj)
    //最后就可以用来遍历了
       for (let i=0;i<obj2.length;i++){
         console.log(obj2[i])
       }
    //输出结果就能出来了,forEach,for of同理
  • 相关阅读:
    Mongodb学习总结-7(运维技术)
    Mongodb学习总结-6(分片技术)
    Mongodb学习总结-5(主从复制)
    Mongodb学习总结-4(索引操作)
    Mongodb学习总结-3(细说高级操作)
    Mongodb学习总结-2(细说增删查改)
    Mongodb学习总结-1(基础入门)
    nginx编译安装与apache动静分离共存设置及负载均衡设置
    yum 安装redis
    spring cache redis
  • 原文地址:https://www.cnblogs.com/goule/p/13630915.html
Copyright © 2011-2022 走看看