zoukankan      html  css  js  c++  java
  • For的衍生对象

    For的衍生对象:

     for in语句:

    for...in 语句用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。

    for...in 语句用于对数组或者对象的属性进行循环操作。

    for ... in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。

    语法:

    for (变量 in 对象)
    {
        在此执行代码
    }

    “变量”用来指定变量,指定的变量可以是数组元素,也可以是对象的属性。

    实例:

    使用 for ... in 循环遍历数组。

    <html>
    <body>
    
    <script type="text/javascript">
    var x
    var mycars = new Array()
    mycars[0] = "Saab"
    mycars[1] = "Volvo"
    mycars[2] = "BMW"
    
    for (x in mycars)
    {
    document.write(mycars[x] + "<br />")
    }
    </script>
    
    </body>
    </html>

    for of语句:

    for...of 语句创建一个循环来迭代可迭代的对象。在 ES6 中引入的 for...of 循环,以替代 for...in 和 forEach() ,并支持新的迭代协议。for...of 允许你遍历 Arrays(数组), Strings(字符串), Maps(映射), Sets(集合)等可迭代的数据结构等。

    
    

    语法

    
    
    for (variable of iterable) {
        statement
    }
    
    
    • variable:每个迭代的属性值被分配给该变量。
    • iterable:一个具有可枚举属性并且可以迭代的对象。
    
    

    用例

    
    

    我们来探讨一些用例。

    
    

    Arrays(数组)

    
    

    Arrays(数组)就是类列表(list-like)对象。数组原型上有各种方法,允许对其进行操作,比如修改和遍历等操作。下面手在一个数组上进行的 for...of 操作:

    
    
    // array-example.js
    const iterable = ['mini', 'mani', 'mo'];
     
    for (const value of iterable) {
      console.log(value);
    }
     
    // Output:
    // mini
    // mani
    // mo
    
    

    其结果就是打印出 iterable 数组中的每一个值。

    
    

    Maps(映射)

    
    

    Map 对象就是保存 key-value(键值) 对。对象和原始值可以用作 key(键)或 value(值)。Map 对象根据其插入方式迭代元素。换句话说, for...of 循环将为每次迭代返回一个 key-value(键值) 数组。

    
    
    // map-example.js
    const iterable = new Map([['one', 1], ['two', 2]]);
     
    for (const [key, value] of iterable) {
      console.log(`Key: ${key} and Value: ${value}`);
    }
     
    // Output:
    // Key: one and Value: 1
    // Key: two and Value: 2
    
    

    Set(集合)

    
    

    Set(集合) 对象允许你存储任何类型的唯一值,这些值可以是原始值或对象。 Set(集合) 对象只是值的集合。 Set(集合) 元素的迭代基于其插入顺序。 Set(集合) 中的值只能发生一次。如果您创建一个具有多个相同元素的 Set(集合) ,那么它仍然被认为是单个元素。

    
    
    // set-example.js
    const iterable = new Set([1, 1, 2, 2, 1]);
     
    for (const value of iterable) {
      console.log(value);
    }
    // Output:
    // 1
    // 2
    
    

    尽管我们的 Set(集合) 有多个 1 和 2 ,但输出的只有 1 和 2 。

    
    

    String(字符串)

    
    

    字符串用于以文本形式存储数据。

    
    
    // string-example.js
    const iterable = 'javascript';
     
    for (const value of iterable) {
      console.log(value);
    }
     
    // Output:
    // "j"
    // "a"
    // "v"
    // "a"
    // "s"
    // "c"
    // "r"
    // "i"
    // "p"
    // "t"
    
    

    这里,对字符串执行迭代,并打印出每个索引上的字符。

    
    

    Arguments Object(参数对象)

    
    

    把一个参数对象看作是一个类数组(array-like)对象,并且对应于传递给函数的参数。这是一个用例:

    
    
    // arguments-example.js
    function args() {
      for (const arg of arguments) {
        console.log(arg);
      }
    }
     
    args('a', 'b', 'c');
    // Output:
    // a
    // b
    // c
    
    

    如前所述,当调用函数时,arguments 会接收传入 args() 函数的任何参数。所以,如果我们传递 20 个参数给 args() 函数,我们将打印出 20 个参数。

    Generators(生成器)

    
    

    生成器是一个函数,它可以退出函数,稍后重新进入函数。

    
    
    // generator-example.js
    function* generator(){ 
      yield 1; 
      yield 2; 
      yield 3; 
    }; 
     
    for (const g of generator()) { 
      console.log(g); 
    }
     
    // Output:
    // 1
    // 2
    // 3
    
    

    function* 定义了一个生成器函数,该函数返回生成器对象(Generator object)。


  • 相关阅读:
    每日一题 为了工作 2020 0412 第四十一题
    每日一题 为了工作 2020 04011 第四十题
    每日一题 为了工作 2020 0410 第三十九题
    每日一题 为了工作 2020 0409 第三十八题
    每日一题 为了工作 2020 0408 第三十七题
    每日一题 为了工作 2020 0407 第三十六题
    每日一题 为了工作 2020 0406 第三十五题
    每日一题 为了工作 2020 0405 第三十四题
    学习总结(二十四)
    学习总结(二十三)
  • 原文地址:https://www.cnblogs.com/ljming/p/9940304.html
Copyright © 2011-2022 走看看