ES6 - for...of
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的更多相关文章
- ES6 - promise对象
Promise的设计初衷 我们使用ajax请求数据,得到数据后再对数据进行操作,可是有时候,对得到的数据进行操作的过程中,可能又要用到ajax请求,这时,我们的代码就变成了这样: $.ajax({ s ...
- ES6 - 对象
ES6为对象带来的新特性. 对象传统的写法: let person={ 'name':'Lily', 'say':function(){ alert('hello!'); } } 1.ES6中写法更简 ...
- ES6 class的基本语法-学习笔记
1.基本上,ES6 的class可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的class写法只是让对象原型的写法更加清晰.更像面向对象编程的语法而已. 类的内部所有定义的方法,都是 ...
- ES6 笔记(二)- 总结
在最近进行的项目中,已经全面使用到ES6,这里对ES6进行整理总结.用得比较多的是带*的内容,这些语法.新增类型.模块调用等从代码量上.可读性上.操作上给项目带来了不少便利. 1.语法 1 ...
- React/React Native 的ES5 ES6写法对照表-b
很多React/React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends React.Component),然而网上搜到的很多教 ...
- ES6 函数的扩展-rest参数
ES6 引入 rest 参数(形式为...变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了.rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中. functio ...
- ES6 class的继承-学习笔记
1.简介 Class 可以通过extends关键字实现继承,这比 ES5 的通过修改原型链实现继承,要清晰和方便很多. 子类必须在constructor方法中调用super方法,否则新建实例时会报错. ...
- 切图崽的自我修养-[ES6] 迭代器Iterator浅析
Iterator 这真是毅种循环 Iterator不是array,也不是set,不是map, 它不是一个实体,而是一种访问机制,是一个用来访问某个对象的接口规范,为各种不同的数据结构提供统一的访问机制 ...
- 【转】ES6 手册
目录 var 和 let/const 的比较 用块级作用域代替 IIFES 箭头函数 字符串 解构 模块 参数 类 Classes Symbols Maps WeakMaps Promises Gen ...
随机推荐
- SQL循环索引
),dates datetime) insert @tbl(order_id,dates) select 'A','2014-1-1' union select 'A','2014-2-1' unio ...
- ssh框架介绍
SSH 为 struts+spring+hibernate 的一个集成框架,是目前较流行的一种JAVA Web应用程序开源框架. Struts Struts是一个基于Sun J2EE平台的MVC框架, ...
- Android 检查手机网络是否可用
添加网络状态权限 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 代 ...
- Android 自定义波浪动画 --"让进度浪起来~"
原文链接:http://www.jianshu.com/p/0e25a10cb9f5 一款效果不错的动画,实现也挺简单的,推荐阅读学习~ -- 由 傻小孩b 分享 waveview <Andro ...
- javascript模仿php 函数 trim ltrim rtrim (原创)
javascript模仿php 函数 trim ltrim rtrim,去除字符串两边空格或其他符号 本文地址:js trim js php trim function trims(){ this. ...
- ImportError: No module named MySQLdb
ImportError: No module named MySQLdb 该错误是源于我们没有安装Python连接MySQL所需的MySQLdb库而引起. python3.5下的解决方法ubuntu系 ...
- (35)odoo中widget
widget大全: many2many_tagsone2many_listselectionprogressbarselectionstatusbarhandlemonetarymail_thread ...
- ITPUB网站的知识索引汇总
1. ITPUB知识索引树 http://www.itpub.net/tree/ http://www.itpub.net/pubtree/index.htm 2. ITPUB知识索引贴——全文索引 ...
- Flume使用小结
本文介绍初次使用Flume传输数据到MongoDB的过程,内容涉及环境部署和注意事项. 1 环境搭建 需要jdk.flume-ng.mongodb java driver.flume-ng-mongo ...
- HTTP 错误 500.23 - Internal Server Error 解决方法
分析原因:在安装完成后IIS已经支持ASP和ASP.NET 2.0,需要注意的是.NET站点的应用程序池应选用Classic .NET AppPool,而不能用默认的DefaultAppPool,否则 ...