for...of是一种用来遍历数据结构的方法,可遍历的对象包括:数组,对象,字符串,节点数组等

我们先来看一下现在存在的遍历方式:

var arr=[1,2,3,4]

(1)for循环

缺点:代码不够简洁

(2)forEach():  arr.forEach(function(value,index) {...});

缺点:无法中断循环

(3)for..in:我们常用来遍历对象属性

  for (let i  in arr){...}

 缺点:每次循环得到的是字符串类型,而不是数字类型。

之后,我们来看一下ES6 的for...of

for (let value of arr ){...}

(1)终止循环(break),跳过循环(continue)

for (let value of arr ){

  if(value==3){

    break;

  }

  console.log(value)   //1 2

}

for (let value of arr ){

  if(value==3){

    continue;   //跳过当前循环

  }

  console.log(value)   //1 2 4 5

}

(2)得到数字类型的索引   keys()

for (let index of arr.keys() ){

  console.log(index)   // 0 1 2 3 4 

}

keys() 为数组的扩展,表示获取键名再遍历

(3)遍历多种类型的数据结构

  • 字符串遍历

  var str='hello';

  for (let v of str){

    console.log(v)    // h e l l o

  }

  • DOM节点遍历

  <li>1</li>

  <li>2</li>

  <li>3</li>

  var lis=document.getElementsByTagName('li');

  for (let li of lis){

    console.log(li)   //<li>1</li>  <li>2</li>  <li>3</li>

  }

ES6 - for...of的更多相关文章

  1. ES6 - promise对象

    Promise的设计初衷 我们使用ajax请求数据,得到数据后再对数据进行操作,可是有时候,对得到的数据进行操作的过程中,可能又要用到ajax请求,这时,我们的代码就变成了这样: $.ajax({ s ...

  2. ES6 - 对象

    ES6为对象带来的新特性. 对象传统的写法: let person={ 'name':'Lily', 'say':function(){ alert('hello!'); } } 1.ES6中写法更简 ...

  3. ES6 class的基本语法-学习笔记

    1.基本上,ES6 的class可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的class写法只是让对象原型的写法更加清晰.更像面向对象编程的语法而已. 类的内部所有定义的方法,都是 ...

  4. ES6 笔记(二)- 总结

        在最近进行的项目中,已经全面使用到ES6,这里对ES6进行整理总结.用得比较多的是带*的内容,这些语法.新增类型.模块调用等从代码量上.可读性上.操作上给项目带来了不少便利.   1.语法 1 ...

  5. React/React Native 的ES5 ES6写法对照表-b

    很多React/React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends React.Component),然而网上搜到的很多教 ...

  6. ES6 函数的扩展-rest参数

    ES6 引入 rest 参数(形式为...变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了.rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中. functio ...

  7. ES6 class的继承-学习笔记

    1.简介 Class 可以通过extends关键字实现继承,这比 ES5 的通过修改原型链实现继承,要清晰和方便很多. 子类必须在constructor方法中调用super方法,否则新建实例时会报错. ...

  8. 切图崽的自我修养-[ES6] 迭代器Iterator浅析

    Iterator 这真是毅种循环 Iterator不是array,也不是set,不是map, 它不是一个实体,而是一种访问机制,是一个用来访问某个对象的接口规范,为各种不同的数据结构提供统一的访问机制 ...

  9. 【转】ES6 手册

    目录 var 和 let/const 的比较 用块级作用域代替 IIFES 箭头函数 字符串 解构 模块 参数 类 Classes Symbols Maps WeakMaps Promises Gen ...

随机推荐

  1. Linux基本操作1 - 设备操作

    Linux开发的过程中,肯定会使用到很多设备,所以对设备的挂载卸载是一个很基本的操作. Linux对设备的默认定义如下: 一.Linux中的硬件设备号     设 备          设 备 号   ...

  2. linux SVNUP显示无法连接主机

    今天开发环境中突然无法连接主机了,我就想到 1.更改svn 链接地址,发现不可取,工程中的每个目录下面都有个.svn文件,修改起来麻烦: 2.建立新文件夹,重新checkout,发现还是无法链接 最后 ...

  3. charles抓包的使用教程

    // Charles 从入门到精通:(http://blog.csdn.net/donwei8/article/details/51647752) //抓包工具:Charles-断点修改 教程 (ht ...

  4. Action<>和Func<> 委托【代理】

    C#中的Action<>和Func<> 其实他们两个都是委托[代理]的简写形式. 一.[action<>]指定那些只有输入参数,没有返回值的委托 Delegate的 ...

  5. Java后台传前台json数组

    function checkStore(){ var flag=1; $.ajax({ url:"widget?type=shop_cart&ajax=yes&action= ...

  6. JavaWeb基础: XML基础知识

    简介 XML:可扩展标记语言,W3C指定的用于描述结构化数据的语言,XML在实际开发中,经常用作软件的配置文件,以描述程序模块之间的依赖和组合关系. XML约束:XML常常用于软件配置管理,对于软件框 ...

  7. Linux服务器

    /*** cloud_sum_server ***/void cloud_sum(int sockfd) { ssize_t n; char buf[MAXLINE]; , b = ; again: ...

  8. CentOS7下安装FTP服务

    1.安装vsftp 1.1.安装vsftp,测试安装的vsftpd的版本是:vsftpd.x86_64 0:3.0.2-11.el7_2 yum -y install vsftpd 1.2.修改配置文 ...

  9. cron

    pre.cjk { font-family: "Nimbus Mono L", monospace } p { margin-bottom: 0.1in; line-height: ...

  10. scp不可用:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED

    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! After doing ssh are you seeing this error.No proble ...