forEach , for in , for of的区别

forEach

优点:遍历的时候更加简洁,效率和for循环相同,不用关心集合下标的问题,减少出错的效率
缺点:不能同时遍历多个集合,在遍历的时候无法修改和删除集合数据,方法不能使用break,continue语句跳出循环,或者使用return从函数体返回,对于空数组不会执行回调函数

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,

forEach不可遍历对象,这也是和for in的区别

   var arr=[1,2,3,4,5,6];
   arr.forEach(function(item,index){
   		console.log(1);
   		return '';
   		console.log(index)
   })   //输出6次1
 //注释:并不会阻止数组循环 ,但是return后面的代码不执行

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

优点:可以遍历数组的键名,遍历对象简洁方便
缺点:某些情况下,会出现随机顺序的遍历,因为里面的值是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

优点:可以使用break,continue和return,不仅支持数组的遍历,还可以遍历类似数组的对象,支持字符串的遍历,最直接的遍历数组的语法,支持map和set对象遍历,for ... in 循环读取键名,for ... of 循环读取键值,且只返回具有数字索引的属性

缺点:不适用于处理原有的原生对象

   let person={name:"老王",age:23,city:"唐山"}
   for (let item of person){
        console.log(item)
    }    //遍历对象  发现它是不可以的

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同理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值