for in 和 for of 的区别

211 阅读1分钟

for in 和 for of 的区别

  • for in可以遍历对象,for of不能遍历对象

  • for of可以用来遍历map集合,for in不能遍历map集合

  • for in遍历数组得到的是数组的下标,for of遍历数组得到的是数组的元素

  • for in遍历键 for of遍历值 -->

for in

for-in 可以循环遍历对象,数组,字符串

- 遍历对象,访问对象属性, 
- 遍历数组,访问数组索引号, 
- 遍历字符串,访问字符串索引号

    var obj = {
        name: 'jack',
        age: 20
    }
    let arr = [10,20,30]
    let str = 'hello'
    
    //for-in遍历对象,获取对象属性
    for (var key in obj) { 
        console.log(`key : ${key}  value: ${obj[key]}`);//遍历出所有的键值对
    }
    //for-in遍历数组,获取数组下标
    for(let key in arr){
        console.log(key); //遍历出所有元素的下标
    }
    //for-in遍历字符串,获取字符下标
    for(let key in str){
        console.log(key); //遍历出所有字符的下标
    }

for of

 var obj = {
        name: 'jack',
        age: 20
    }
    let arr = [10,20,30]
    let str = 'hello'
    let map = new Map([["姓名", "小王"],["年龄","23"]]) //一种存储数据的结构,后面学习内容
    
    //for-of不能遍历对象
    for (let v of obj) {
        console.log(v); //控制台直接报错
    }
    //for-of遍历数组,获取数组元素
    for(let v of arr){
        console.log(v); //遍历出所有的元素 10 20 30 
    }
    //for-of 遍历字符串,获取字符元素
    for(let v of str){
        console.log(v);//遍历出所有的字符 h e l l o
    }
    //for-of遍历Map集合
    for(let v of map){
        console.log(v);  //(2) ['姓名', '小王']
                         //(2) ['年龄', '23']
    }