zoukankan      html  css  js  c++  java
  • ES6笔记一

    遍历数组:

    1:传统的  

    for (var index = 0; index < myArray.length; index++) {
      console.log(myArray[index]);
    }

    2 内建的 forEach 方法

    myArray.forEach(function (value) {
      console.log(value);  //value不是下标而是数组内容
    });

    但是此方法不能使用 break 语句中断循环,也不能使用 return 语句返回到外层函数。

    3:for-in 循环

    for (var index in myArray) { // 千万别这样做
      console.log(myArray[index]);
    }

    在这段代码中,赋给 index 的值不是实际的数字,而是字符串“0”、“1”、“2”,
    此时很可能在无意之间进行字符串算数计算,例如:“2” + 1 == “21”,这给
    编码过程带来极大的不便。

    在某些情况下,这段代码可能按照随机顺序遍历数组元素。

    简而言之,for-in 是为普通对象设计的,你可以遍历得到字符串类型的键,
    因此不适用于数组遍历。

    for-in适用于普通对象和哈希(hash)数组

    hash数组的创建只有一种方法

    var foo = [];
    foo['name'] = 'tom';
    foo['sex'] = 'man';

    4:ES6 中增加了一种新的for-of循环语法

    for (var value of myArray) {
      console.log(value);//value不是下标而是数组内容
    }
    这个方法避开了 for-in 循环的所有缺陷
    与 forEach()不同的是,它可以正确响应 break、continue 和 return 语句

    for-of 循环不仅支持数组,还支持大多数类数组对象,例如 DOM NodeList 对象。
    for-of 循环也支持字符串遍历,它将字符串视为一系列的 Unicode 字符来进行遍历:
    for (var chr of "qwqew") {
    alert(chr);//分别输出:q w q e w
    }
    它同样支持 Map 和 Set 对象遍历。

    Set 对象可以自动排除重复项:
    // 基于单词数组创建一个 set 对象
    var uniqueWords = new Set(words);
    生成 Set 对象后,你可以轻松遍历它所包含的内容:
    for (var word of uniqueWords) {
    console.log(word);
    }
    Map 对象稍有不同:内含的数据由键值对组成,所以你需要使用解构(destructuring)
    来将键值对拆解为两个独立的变量:

    for (var [key, value] of phoneBookMap) {
    console.log(key + "'s phone number is: " + value);
    }

    for-of 循环不支持普通对象,但如果你想迭代一个对象的属性,你可以用 for-in 循
    环(这也是它的本职工作)或内建的 Object.keys()方法:
    // 向控制台输出对象的可枚举属性
    for (var key of Object.keys(someObject)) {
    console.log(key + ": " + someObject[key]);
    }


    当你向任意对象添加 myObject[Symbol.iterator]()迭代器方法,就可以遍历这个对象
    假设你正在使用 jQuery,尽管你非常钟情于里面的.each()方法,但你还
    是想让 jQuery 对象也支持 for-of 循环,你可以这样做:
    jQuery.prototype[Symbol.iterator] = Array.prototype[Symbol.iterator];
    这里通过 Symbol 处理了一下方法的名称。标准委员会可以把这个方法命
    名为.iterator()方法,但是如果你的代码中的对象可能也有一些.iterator()方法,这一定会
    让你感到非常困惑。于是在 ES6 标准中使用 symbol 来作为方法名,而不是使用字符串
    Symbols 是 ES6 中的新类型,基于新标准,你可以定义一个全新的 symbol,就像 Symbol.iterator,如此
    一来可以保证不与任何已有代码产生冲突。
    所有拥有[Symbol.iterator]()的对象被称为可迭代的

  • 相关阅读:
    请求浏览器使用chrome查看http请求
    输入数据问题一百一十二:C语言合法标识符(2)
    方法调用代理代码改进
    串字符串问题一百一十三:Palindromes _easy version
    删除系统Win7系统盘越来越小,系统盘清理技巧
    配置编译linux下QT程序编译时的错误:QMAKESPEC has not been set, so configuration cannot be deduced.
    整数实例java处理大整数
    触发器课程SQL Server 知识梳理九 触发器的使用
    输出整数回溯法解决素数环
    类注解Spring注解自动注入Bean
  • 原文地址:https://www.cnblogs.com/qhhw/p/5948235.html
Copyright © 2011-2022 走看看