javascript语法 --- for of/for in循环与Map对象,遍历对象的方法

  • 循环数组
    var arr  = [a,b,c,d]
    
    for (var i in arr){
        console.log(i) //0 1 2 3
    }
    
    for (var i of arr){
        console.log(i) //a b c d
    }

     

  • 循环json

    var json = {'a' : 'A', 'b' : 'B', 'c' : 'D', 'd' : 'D'}
    
    for (var name in json){
        console.log(name) //'a' 'b' 'c' 'd'
    }
    
    for (var name of json){
        console.log(name) //...is not a function
    }
    
    // for of不能循环json,真正的目的是为了循环Map对象

     

  • Map对象
     

    和json相似,也是一种key-value形式。

    Map对象是为了和for of循环配合而生的。

    var map = new Map()
    // 设置:
    map.set(name, value)
    // 获取:
    map.get(name)
    // 删除:
    map.delete(name)
    
    // for of 循环 map:
    var map = new Map()
    map.set('a', 'A')
    map.set('b', 'B')
    map.set('c', 'C')
    
    for(var name of map){
        console.log(name) //['a', 'A'], ['b', 'B'], ['c', 'C'] 
    }
    
    for(var key of map.keys()){   //只循环key
        console.log(key ) //a b c
    }
    
    for(var value of map.values()){  //只循环value
        console.log(value ) //A B C
    }
    

     

  • Object.keys()
    返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性).
    var obj = {'0':'a','1':'b','2':'c'};
    Object.keys(obj).forEach(function(key){
         console.log(key,obj[key]);
    });
    // 0 a
    // 1 b
    // 2 c

     

  • Object.getOwnPropertyNames(obj)
    返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性).
    
    var obj = {'0':'a','1':'b','2':'c'};
    Object.getOwnPropertyNames(obj).forEach(function(key){
        console.log(key,obj[key]);
    });
    // 0 a
    // 1 b
    // 2 c

     

  • Reflect.ownKeys(obj)
    返回一个数组,包含对象自身的所有属性,不管属性名是Symbol或字符串,也不管是否可枚举.  
    
    var obj = {'0':'a','1':'b','2':'c'};
    Reflect.ownKeys(obj).forEach(function(key){
        console.log(key,obj[key]);
    });
    // 0 a
    // 1 b
    // 2 c

     

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值