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}

JavaScript 基础(四) 循环的更多相关文章

  1. JavaScript基础四

    1.13 Js中的面向对象 1.13.1 创建对象的几种常用方式 1.使用Object或对象字面量创建对象 2.工厂模式创建对象 3.构造函数模式创建对象 4.原型模式创建对象 1.使用Object或 ...

  2. JavaScript基础——实现循环

    循环是多次执行同一段代码的一种手段.当你需要在一个数组或对象集上重复执行相同的任务时,这是非常有用的. JavaScript提供执行for和while循环的功能. 1.while循环 JavaScri ...

  3. Javascript基础四(数组,字符,对象,日期)

    第一节:数组 1.数组的概念及定义     可以存放一组数据:          当需要操作多个数据时: 2.数组的创建方式 var arr1 = [1,2,3]; //字面量方式 var arr2 ...

  4. JavaScript 基础数组循环和迭代的几种方法

    JavaScript 数组循环和迭代   (之前一直没怎么注意数组循环,今天做一道题时,用到forEach循环发现它并没有按照我想象的样子执行,总结一下数组循环) 一.第一种方法就是for()循环   ...

  5. javascript基础之循环

    //while循环 <script type="text/javascript"> i = 1; while (i <= 6) { document.write( ...

  6. JavaScript 基础四

    遍历对象的属性 for...in 语句用于对数组或者对象的属性进行循环操作. for (变量 in 对象名字) { 在此执行代码 } 这个变量是自定义 符合命名规范 但是一般我们 都写为 k 或则 k ...

  7. JavaScript 基础(四) - HTML DOM Event

    HTML DOM Event(事件) HTML 4.0 的新特性之一是有能力使 HTML 事件触发浏览器中的动作(action),比如当用户点击某个 HTML 元素时启动一段 JavaScript.下 ...

  8. javascript基础系列(入门前须知)

    -----------------------小历史---------------------------- javascript与java是两种语言,他们的创作公司不同,JavaScript当时是借 ...

  9. 前端(十二)—— JavaScript基础操作:if语句、for循环、while循环、for...in、for...of、异常处理、函数、事件、JS选择器、JS操作页面样式

    JavaScript基础操作 一.分支结构 1.if语句 if 基础语法 if (条件表达式) { 代码块; } // 当条件表达式结果为true,会执行代码块:反之不执行 // 条件表达式可以为普通 ...

随机推荐

  1. JS && || 陷阱 javascript 逻辑与、逻辑或 【转】

    通常来说逻辑运算a&&b和a||b分别是逻辑与运算和逻辑或运算,返回的是一个布尔值,要么为true,要么为false. 比如在PHP里面a&&b返回类型永远是布尔值,非 ...

  2. springboot从入门到精通(二)

    这一节我们一起用springboot开发一个应用程序,应用程序里的核心概念是玩家获取英雄列表上的英雄信息. 1.定义实体模型: 代码如下: package com.dota.herolist.enti ...

  3. 2、Dubbo源码解析--服务发布原理(Netty服务暴露)

    一.服务发布 - 原理: 首先看Dubbo日志,截取重要部分: 1)暴露本地服务 Export dubbo service com.alibaba.dubbo.demo.DemoService to ...

  4. vue+axios+easy-mock+element-ui实现表格分页功能

    废话不多,效果如图: LineSource.vue文件内代码如下: <template> <div class="c-main auth userControl" ...

  5. Java NIO(三) Buffer

    Java NIO中的Buffer用于和NIO通道进行交互.如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的. 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被包装成NIO ...

  6. Nginx+Tomcat在Windows下做负载均衡

    一. 为什么需要对Tomcat服务器做负载均衡 Tomcat服务器作为一个Web服务器,其并发数在300-500之间,如果有超过500的并发数便会出现Tomcat不能响应新的请求的情况,严重影响网站的 ...

  7. WAKE-WIN10-SOFT-GITHUB

    1,GITHUB 官网:https://github.com/ 2,软件工具 ,,,,,,

  8. bzoj1264 [AHOI2006]基因匹配

    Description 基因匹配(match) 卡卡昨天晚上做梦梦见他和可可来到了另外一个星球,这个星球上生物的DNA序列由无数种碱基排列而成(地球上只有4种),而更奇怪的是,组成DNA序列的每一种碱 ...

  9. Android仿QQ复制昵称效果

    本文同步自http://javaexception.com/archives/76 背景: 这几天做一个复制文本的需求,突然看到QQ上复制昵称跟QQ号的效果,觉得很不错,就想要模仿一波,办法比较简单粗 ...

  10. selenium定位学习回顾

    之前已经专门学过了定位,但后来因为浏览器比较方便,可以直接复制xpath和css进行定位,个人觉得自己快遗忘了这块,所以专门来回顾一下, 顺便记录一下,以便后期查看. 进行web页面自动化测试,对页面 ...