js中四种for循环

2021-05-30 00:05

阅读:766

标签:reject   promise   javascrip   ref   html   blank   query   pre   new   

先说结论:遍历对象用for in 遍历数组用for of

不要用for in 遍历数组会出问题,实际中已经遇到了

function getAreaQueryGrid(res) {
    let features = new ol.format.GeoJSON().readFeatures(res);
    for (let i in features) {
        if (typeof (features[i].values_) == "undefined") {
        } else {
            data.push(features[i].values_)
        }
    }
}

这里就是for in 最后会莫名其妙多几个,这里加了个判断,其实不用for in 用传统的for 或者用for of 就能解决了。

1.传统的for

其实他挺好的,不会出错,效率也不错,

2.for in

? for-in 遍历原型链上的属性。所以遍历数组会出问题

3.forEach

? 不能break 和 return,默认是并行的

4.for of
for of不能遍历普通对象

? 不仅支持数组,还支持大多数类数组对象,也支持字符串遍历

 let arr = [1,3,5,7,9];
        console.log(arr);
        for (let i = 0 ; i  {
            console.log("foreach============ "+element);//foreach也是,不是key
        });
        for ( i of arr){
            console.log("for...of==========="+i);
        }//注意,for of中的i就是本身,不是对应的key,不要写成arr[i]这种格式了

forEach默认是并行的

https://www.cnblogs.com/lynn-z/p/13068866.html

function sleep(num){
            return new Promise ((resolve,reject)=>{
                setInterval(()=>{
                    resolve(num*num)
                },1000)
            })
        };

        function test (){
            arr.forEach(async x =>{
                let  res = await sleep(x);
                console.log("foreach========="+res);
            })
        }

        test()

        async function  testforof(){
            for (x of arr) {
                let res = await sleep(x)
                console.log("testforof========"+res);
            }
        }

        testforof()

这里foreach 会直接输出1,9,25,49,81

换成for of 就会每隔一秒输出一个

js中四种for循环

标签:reject   promise   javascrip   ref   html   blank   query   pre   new   

原文地址:https://www.cnblogs.com/zcbj588/p/14700011.html


评论


亲,登录后才可以留言!