JavaScript循环for...in、for...of、iterator迭代器

JavaScript循环for...in、for...of、iterator迭代器,第1张

for…in

for…in用于循环访问对象的所有可枚举属性.
可以用于数组字符串对象一起使用,
MapSet不能使用

Array类型循环的是index下标
    for(let prop in ['a','b','c']){
        console.log(prop)   //0、1、2
    }
string类型循环的是index下标
    for(let prop in 'congjiyong'){
        console.log(prop) //0、1、2、3、4、5、6、7、8、9
    }
循环的是对象的键,访问键值时使用:对象[键]
    var abc = {a:1,b:2,c:3}
    for(let prop in abc){
        console.log(prop);  //键 a、b、c
        console.log(abc[prop]); //键值 1、2、3
    }
for…of

用于迭代可迭代对象,迭代其值而不是属性。
可用于数组字符串MapSet可以使用
对象不能用

Array类型循环的是value值
    for(let val of ['a','b','c']){
        console.log(val) //a、b、c
    }
string类型循环的是value值
    for(let val of 'congjiyong'){
        console.log(val) //c、o、n、g、j、i、y、o、n、g
    }
对象类型不能用
>     Uncaught TypeError: {(intermediate value)(intermediate value)(intermediate value)} is not iterable
Set、Map可以使用
    for (let val of new Set(['a', 'b', 'a', 'd'])){
        console.log(val); //Set不能用重复的值,所以为 a、b、d 
    }
iterator

因为对象不能使用for…of所以使用iterator,下面的固定格式

let obj = {
    a: 1,
    b: 2,
    c: 3
}
obj[Symbol.iterator] = function () {
    //迭代协议
    let values = Object.values(obj)   //1、Object.keys() 2、Object.values() 
    console.log(values)
    let index = 0;
    return {
        next() {
            if (index >= values.length) {
                return {
                    done: true  //结束循环,循环已经完成
                }
            }
            else {
                return {
                    value:values[index++],
                    done: false, //继续循环,循环未完成

                }
            }
        }
    }
}
for (let val of obj) {
    console.log(val)
}
arr.forEach

forEach可以循环访问数组的值value下标index

var arr = ['a','b','c']
arr.forEach((value,index,arr)=>{
    console.log(value);
    console.log(index)
})
  const s5 = new Set(['a', 'b', 'c']);
  s5.forEach(value => {
    console.log(value);
  })

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/940827.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-17
下一篇 2022-05-17

发表评论

登录后才能评论

评论列表(0条)

保存