• 嗨:说您呢,循环了解一下


    简介

    本文只是拓展一下在实际项目中我是如何使用循环的,在使用循环的时候我怎么把代码写到极致,让代码更加精简,也许你在工作中遇到过。但你看完这篇文章你会觉得,原来还可以这样写。

    JavaScript中的循环

    JavaScript在本文简称:js。js中循环分以下几大类:

    1. for循环
    2. for in 循环
    3. while循环
    4. do while循环
    5. 数组原型带的方法:map、every、some、等//这些暂时不讨论
    
    

    例子

    这是我们最常使用的循环。很直观明了。

    for(var i=0;i<10;i++){
       console.log(i);
    }
    

    如果对于循环不要求顺序的话我会这样写。

    for(var i=10;i--;){
      console.log(i);
    }
    //代码明显比上边少了些
    

    如果我们在循环的时候循环的是数组,数组内是函数或者对象或者是值。我们可以这样写

    var list=[1,2,3,4,5,6,7,8,9,10];
    for(var i=0,item;item=list[i++];){
       console.log(item);
    }
    //也可以使用数组原型提供的方法
    

    在使用 for in 循环的时候我们需要注意的是

    遍历的如果是对象,如果它的键是枚举属性,才可以遍历

    遍历的如果是对象,它是不会按照顺序遍历的

    var obj={
    	1:100,
    	b:2,
    	a:1,
    	c:3,
    	0:200
    };
    Object.defineProperty(obj,"a",{
    	enumerable:false
    });
    for (var i in obj){
    	console.log(obj[i])
    }
    

    在使用while 循环的时候

    不要求顺序可以这样写

     var list=[1,2,3,4,5],
    	l=list.length;
      while(l--){
          console.log(list[l])
     }
    

    要求顺序是这样写

    var list=[1,2,3,4,5],
    	l=list.length,
    	i=0;
    while(i<l){
          console.log(list[i])
    	i++;
    }
    

    使用do while 的时候

    var list=[],
    l=list.length,
    i=0;
    do{
       console.log(list[i]);
       i++
    }while(i<l)
    

    需要注意的是无论如何,都会先执行do不管条件成立与否

    特解

    比如数组删除某一个数据的时候

    var list=[{a:1},{a:2},{a:3},{a:5}];
    l=list.length;
    for(var i=0;i<l;i++){
    	if(list[i].a===2){
    		list.splice(i,1);
    		l--;//如果没有加这段代码就会带来问题。因为splice会改变数组的长度。
    	}
    }
    //这样的代码如果没有 l-- 肯定会有问题。如果使用下边方式倒序则很轻松实现
    //或者这样
    var list=[{a:1},{a:2},{a:3},{a:5}];
    for(var i=0;i<list.length;i++){
    	if(list[i].a===2){
    		list.splice(i,1);
    		i--;//如果没有加这段代码就会带来问题。因为splice会改变数组的长度。
    	}
    }
    

    倒序则很轻松实现,不用考虑splice带来的影响。

    var list=[{a:1},{a:2},{a:3},{a:5}];
    l=list.length;
    while(l--){
    	if(list[l].a===2){
    		list.splice(i,1);
    	}
    }
    

    总结

    有些时候我建议还是把代码写的规范一些,有些时候需要封装一些不提供给别人看的代码库时候,则可以使用简写方式。总之,根据自己实际需求去写。小小文章不成大器,望各位看官留个好评。

  • 相关阅读:
    关于Dijkstra三种堆速度的研究
    [BZOJ1041][HAOI2008]圆上的整点[数论]
    [BZOJ2482][Spoj1557] Can you answer these queries II[线段树]
    [CF600E]Lomsat gelral[dsu on tree/树上启发式合并]
    [BZOJ3495]PA2010 Riddle[2-SAT]
    [9.26模拟] 伪造
    [bzoj4722] 由乃
    [bzoj2004] 公交线路
    [51nod1314] 定位系统
    [51nod1143] 路径和树
  • 原文地址:https://www.cnblogs.com/xiaoxiaokun/p/9856896.html
Copyright © 2020-2023  润新知