最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • javascript中的循环方法

    正文概述 掘金(Saku)   2021-01-05   456

    Javascript中的遍历循环

    1.for循环

    对于数值索引的数组来说,可以使用标准的for循环来遍历值

    const arr=[1,2,3,4];
    for(let i=0;i<arr.length;i++){
        console.log(i);
    }
    

    通过遍历数组下标来取得数组的值;

    2.for...in循环

    for...in循环可以用来遍历对象的可枚举属性列表(包括原型链上的属性)

    const myObject={};
    
    Object.defineProperty(myobject,"a",{
        //可枚举
    	enumerable:true,
        value:2,
    })
    Object.defineProperty(myobject,"b",{
        //不可枚举
    	enumerable:false,
        value:2,
    })
    
    for(let k in myObject){
        console.log(k,myObject[k])
    	// a 2
    }
    //使用for...in循环是无法直接获得属性值的,因为它实际遍历的是对象中的所有可枚举属性,
    //所以你需要手动获得属性值.
    

    在数组上应用for...in循环,不仅仅会包含所有数值索引,还会包含所有可枚举属性.

    所以最好在对象上应用for...in循环。如果要遍历数组最好使用传统的for循环来遍历.

    3.for...of循环

    1.ES6新增的for...of循环

    const arr=[1,2,3];
    for(let value of arr){
        console.log(value)
        //1
        //2
        //3
    }
    

    for...of循环首先会向所有被访问的对象请求一个迭代器对象,然后通过调用迭代器对象的next()方法来遍历所有返回值

    在数组中有内置的@@iterator,因此for...of可以直接应用在数组上。

    使用内置的@@iterator遍历数组

    const arr=[1,2,3];
    //获取数组中的iterator对象:使用ES6中的符号Symbol.iterator来获取对象的@@iteraotr内部属性.
    //@@iterator本身不是一个迭代器,而是一个返回迭代器对象的函数。
    const it=arr[Symbol.iterator]();
    
    it.next(); //{value:1,done:false}
    it.next(); //{value:2,done:false}
    it.next(); //{value:3,done:false}
    it.next(); //{done:true}
    
    //调用迭代器的next()方法会返回形式为{value:..,done:..}的值;
    //value为当前的值,done是一个布尔值,表示是否还存在可以遍历的值
    

    2.给对象定义@@iterator

    const myObject={
        a:2,
        b:3
    }
    Object.defineProperty(myObject,Symbol.iterator,{
    	enumerable:false,
        writeable:false,
        configurable:true,
        value:function(){
            let o=this;
            let idx=0;
            //对象中的属性数组
            let ks=Object.keys(o);
            return{
                value:o[ks[idx++]],
                done:(idx>ks.length);
            }
        }
    })
    
    const it=myObject[Symbol.iterator]();
    it.next(); //{value:2,done:false}
    it.next(); //{value:3,done:false}
    it.next(); //{done:true}
    
    
    for(let value of myObject){
    	console.log(value);
    }
    // 2
    // 3
    

    4.foreach(...)

    **forEach()** 方法对数组的每个元素执行一次给定的函数。

    const arr = ['a', 'b', 'c'];
    arr.forEach(element => console.log(element));
    // a
    // b
    // c
    
    
    arr.forEach(callback(currentValue [,index [,array]])[,thisArg])
    

    forEach方法中的function回调有三个参数: 第一个参数是遍历的数组内容, 第二个参数是对应的数组索引, 第三个参数是数组本身

    5.some(...)

    some()是对数组中每一项运行给定函数,如果该函数对任一项返回true,则返回true。

    var arr = [ 1, 2, 3, 4, 5, 6 ]; 
     
    console.log( arr.some( function( item, index, array ){ 
        console.log( 'item=' + item + ',index='+index+',array='+array ); 
        return item > 3; 
    })); 
    // item=1,index=0,array=1,2,3,4,5,6
    // item=2,index=1,array=1,2,3,4,5,6
    // item=3,index=2,array=1,2,3,4,5,6
    // item=4,index=3,array=1,2,3,4,5,6
    // true
    

    6.every(...)

    every()是对数组中每一项运行给定函数,如果该函数对每一项返回true,则返回true。

    var arr = [ 1, 2, 3, 4, 5, 6 ]; 
    
    console.log( arr.every( function( item, index, array ){ 
        console.log( 'item=' + item + ',index='+index+',array='+array ); 
        return item > 3; 
    }));
    // item=1,index=0,array=1,2,3,4,5,6
    // false
    

    起源地下载网 » javascript中的循环方法

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元