• JS17 -- 循环和遍历各方法比较


    1、for...in:

      ①. 返回下标
      ②. 只遍历可枚举的,如果设置某下标为不可枚举,则不展示Object.defineProperty(arr,index,{enumrable:false})
      ③. 还会遍历继承的, Array.prototyp.my = 'shabi'; 也会遍历出来,可以通过hasOwnProperty判断有没有这个属性(非继承)
      ④. 对象遍历不安顺序{"2":'ef',"a":'fefe',"1":"feffgeef"}
      ⑤. 数组通过对象方式添加属性,array.text = 1;只有for...in能打印出
    2、forEach:

       ①. 返回值,下标,原数组
      ②. 没办法使用 break 语句跳出循环,或者使用return从函数体内返回
    3、for...of

      ①. 返回值
      ②. 获取下标转为Map
      ②. 可以使用 break, continue 和 return
      ③. 除支持数组,还支持字符串,Set,Map(let [key,value] of xxxMap),对象
      ⑤. 代替for...in和forEach

    Array.prototype.bb = 'efefef';
    let arrA = [
    	{id:1, name: 'AA', url: '/ueijfejf'},
    	{id:2, name: 'BB', url: '/ueijfejf'},
    	{id:3, name: 'CC', url: '/ueijfejf'},
    	{id:4, name: 'DD', url: '/ueijfejf'},
    	{id:5, name: 'EE', url: '/ueijfejf'},
    ]
    arrA['efefe'] = {id:0}
    Object.defineProperty(arrA,'efefe',{
    	enumerable: false
    })
    Object.defineProperty(arrA,0,{
    	enumerable: false
    })
    Object.defineProperty(arrA,2,{
    	enumerable: false
    })
    console.log('for...in-start')
    for(let item in arrA){
    	console.log(item);
    }
    console.log('for...in-end')
    console.log('forEach-start')
    arrA.forEach((item)=>{
    	console.log(item)
    })
    console.log('forEach-end')
    console.log('for...of-start')
    for(let item of arrA){
    	console.log(item);
    }
    console.log('for...of-end')
    

      

     4、filter 

     过滤数组

     arr.filter((item,index,oldArr)=>{true});   //   return 为true的item,生成新的数组,否则[]

    5、map 

     arr.map((item,index,oldArr)=>{  }); 

    https://segmentfault.com/a/1190000018340362

    https://www.cnblogs.com/qdlhj/p/9916324.html
    https://www.baidu.com/s?ie=UTF-8&wd=map%20%E5%92%8C%20for%20of

  • 相关阅读:
    HTTP解析
    Linux(CentOS)常用命令
    Windows下虚拟Linux
    国内静态文件CDN服务介绍 国内js公共库
    吐槽一下csdn和博客园
    项目托管 网站 小记
    微软2013年校园实习生招聘笔试题及答案
    最近在折腾VPS(持续完善)
    spring MVC +freemarker + easyui 实现sql查询和执行小工具总结
    Hessian 接口使用示例总结
  • 原文地址:https://www.cnblogs.com/lgyong/p/12704162.html
Copyright © 2020-2023  润新知