• JavaScript 基础(四) 循环


    JavaScript的循环有两种,一种是for 循环,通过初始条件,结束条件和递增条件来循环执行语句块:

      var x = 0;
      var i;
      for(i=1; i <=10000; i++){
        x = x +i;
      }

    分析一下for循环的控制条件:
          i=1 这是初始条件,将变量i置为1;
          i <=10000 这是判断条件,满足时就继续循环,不满足就退出循环。
          i ++ 这是每次循环后的条件,由于每次循环后变量i 都会 加1,因此它终将在若干次循环后不满足判断条件 i <=10000而退出循环。

    for 循环最常用的地方是利用索引来遍历数组。

        var arr=['Apple','Google','Microsoft'];
        var i, x;
        for(i=0;i<arr.length;i++){
            x=arr[i];
            alert(x)
        }

    for循环的3个条件都是可以省略的,如果没有退出循环的判断条件,就必须使用break语句退出循环,否则就是死循环:

    for.......in
      for 循环的一个变体是for....in 循环,他可以把一个对象的所有属性一次循环出来。

     var o = {
        name:'Jack,
        age:20,
        city:'Beijing'
      }
      for(var key in o){
        alert(Key) //"name" "age","city"
      }

    要过滤掉对象继承的属性,用hasOwnProperty()来实现:

     var o = {
        name: 'Jack',
        age: 20,
        city: 'Beijing'
      };
      for (var key in o) {
        if (o.hasOwnProperty(key)) {
            alert(key); // 'name', 'age', 'city'
        }
      }

    由于Array也是对象,而它的每个元素的索引被视为对象的属性,因此,for ... in循环可以直接循环出Array的索引:

    var a = ['A','B','C'];
      for(var i in a){
          alert(i); // '0' '1' '2'
          alert(a[i]); // ‘A’,'B','C'
          注意: for ... in对Array的循环得到的是String而不是Number。
       }

    Map和Set
    JavaScript的默认对象表示方式{} 可以视为其语音中的Map或Dictionary 的数据结构,即一组键值对。
    但是JavaScript的对象有个小问题,就是键必须是字符串。但实际上Number或者其他数据类型作为键也是非常合理的。
    Map 是一组键对的结构,具有极快的查找速度。

        var name =['Michael','Bob','Tracy'];
        var scores =[95,75,85];

    给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,Array越长,耗时越长。
    如果用Map实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢

        var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
        m.get('Michael'); // 95

    初始化Map需要一个二维数组,或者直接初始化一个空Map。

        var m = new Map(); // 空Map
        m.set('Adam', 67); // 添加新的key-value
        m.set('Bob', 59);
        m.has('Adam'); // 是否存在key 'Adam': true
        m.get('Adam'); // 67
        m.delete('Adam'); // 删除key 'Adam'
        m.get('Adam'); // undefined

    Set
      Set 和Map 类似,也是一个组合key的集合,但不存储value.由于key不能重复,所以,在Set中,没有重复的key。
      要创建一个Set,需要提供一个Array 作为输入,或直接创建一个空Set:

          var s1= new Set(); // 空Set
          var s2 =new Set([1,2,3]); // 含1,2,3

      重复元素在Set 中自动被过滤。

          var s= new Set([1,2,3,3,'3']);
          s: //Set{1,2,3,'3'}

      注意数字3和字符串'3'是不同的元素。
      通过add(key)方法可以添加元素到Set中,可以重复添加,但不会有效果:

      >>>s.add(4)
        >>>s
         {1,2,3,4}
        >>>s.add(4)
        >>>s
        {1,2,3,4}

        通过delete(key)方法可以删除元素:
      

      var s=new Set([1,2,3])
        s://Set{1.2.3}
           s.delete(3);
           s://Set{1,2}
  • 相关阅读:
    服务限流原理及算法
    Kafka 与 RabbitMQ 如何选择使用哪个?
    分布式事务之最终一致性实现方案
    如何在Ubuntu 14.04中使用systemctl?
    postgresql13 for window 安装及备份还原数据
    手把手教大家在mac上用VMWare虚拟机装Ubuntu
    在Mac平台上使用Multipass安装Ubuntu虚拟机
    如何在markdown中插入js和css
    HTML5标签
    linux
  • 原文地址:https://www.cnblogs.com/nmxs/p/5498401.html
Copyright © 2020-2023  润新知