js遍历详解(forEach, map, for, for...in, for...of)


Posted in Javascript onAugust 28, 2019

forEach

es5出来的方法,这是我在react中用的最多的遍历方法之一,用法如下:

models.forEach(model => app.model(model));

dva里面经常这么写。

写法很简单,经常用于通过这个数组内的数据创造新的结构,但是forEach的问题在于它不能跳出循环。

map

也是用的最多的方法之一,用法如下

{data.map(d => (
     <div className="balance-row">
      <div className="balance-col currency">{d.currency.toUpperCase()}</div>
      <div className="balance-col balance">
       <div>
        <FormattedNumber value={d.balance} />
       </div>
       <div className="light-text lock">
        <i className="icon anticon icon-lock" /><FormattedNumber value={d.locked} />
       </div>
      </div>
     </div>
    ))}

react 里面经常这么写。

const value = [1, 22, 4, 5].map(d => d + 1);
value; // [2, 23, 5, 6]

用于改变一个数组内容,相当于改变了原数组

for ... in

for (let prop in obj) {
 if (obj.hasOwnProperty(prop)) {
  // 继续操作prop和obj
 }
}

for ... in也可以用于遍历数组,但是不推荐

for ... of

ES6中加了一个新的遍历方式,主要是用来弥补forEach 和 for...in的短板,它还可以遍历字符串、map对象、set对象、generator对象。

注意:它只能遍历带有iterable属性的对象,所以不能遍历对象,除非刻意给object加上一个iterable属性。
这个老厉害了!

Map

let iterable = new Map([["a", 1], ["b", 2], ["c", 3]]);
 
for (let [key, value] of iterable) {
 console.log(value);
}
// 1
// 2
// 3
 
for (let key of iterable) {
 console.log(key);
}
// [a, 1]
// [b, 2]
// [c, 3]

Set

let iterable = new Set([1, 1, 2, 2, 3, 3]);
 
for (let value of iterable) {
 console.log(value);
}
// 1
// 2
// 3

Generator

function * fibonacci() { // a generator function
 let [prev, curr] = [0, 1];
 while (true) {
  [prev, curr] = [curr, prev + curr];
  yield curr;
 }
}
 
for (let n of fibonacci()) {
 console.log(n);
 // truncate the sequence at 1000
 if (n >= 1000) {
  break;
 }
}

以上就是本次介绍的全部知识点内容,感谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JavaScript日历实现代码
Sep 12 Javascript
Javascript基础教程之argument 详解
Jan 18 Javascript
Wireshark基本介绍和学习TCP三次握手
Aug 15 Javascript
bootstrap与Jquery UI 按钮样式冲突的解决办法
Sep 23 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
Dec 14 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
Dec 26 Javascript
vue打包后显示空白正确处理方法
Nov 01 Javascript
从零开始搭建一个react项目开发
Feb 09 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
Aug 25 Javascript
微信小程序关键字变色实现代码实例
Dec 13 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
Jun 19 Javascript
详解Js模块化的作用原理和方案
Apr 29 Javascript
Angular6使用forRoot() 注册单一实例服务问题
Aug 27 #Javascript
jQuery - AJAX load() 实例用法详解
Aug 27 #jQuery
JS实现提示框跟随鼠标移动
Aug 27 #Javascript
js对象数组和对象的使用实例详解
Aug 27 #Javascript
vue递归组件实战之简单树形控件实例代码
Aug 27 #Javascript
vue项目中引入Sass实例方法
Aug 27 #Javascript
package.json配置文件构成详解
Aug 27 #Javascript
You might like
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
php 求质素(素数) 的实现代码
2011/04/12 PHP
PHP自动重命名文件实现方法
2014/11/04 PHP
PHP new static 和 new self详解
2017/02/19 PHP
Laravel框架用户登陆身份验证实现方法详解
2017/09/14 PHP
PHP hebrev()函数用法讲解
2019/02/21 PHP
在线游戏大家来找茬II
2006/09/30 Javascript
IE/FireFox具备兼容性的拖动代码
2007/08/13 Javascript
Chrome中模态对话框showModalDialog返回值问题的解决方法
2010/05/25 Javascript
js 关于=+与+=日期函数使用说明(赋值运算符)
2011/11/15 Javascript
javascript Array.prototype.slice的使用示例
2013/11/14 Javascript
jQuery中Chosen三级联动功能实例代码
2017/03/07 Javascript
vue引入swiper插件的使用实例
2017/07/19 Javascript
用python实现的去除win下文本文件头部BOM的代码
2013/02/10 Python
Python 实现数据库更新脚本的生成方法
2017/07/09 Python
Python实现求两个csv文件交集的方法
2017/09/06 Python
详解python算法之冒泡排序
2019/03/05 Python
python实现与redis交互操作详解
2020/04/21 Python
关于Python字符编码与二进制不得不说的一些事
2020/10/04 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
2020/11/27 Python
Python wordcloud库安装方法总结
2020/12/31 Python
MATCHESFASHION.COM法国官网:英国奢侈品零售商
2018/01/04 全球购物
澳大利亚领先的在线机械五金、园艺和存储专家:Edisons
2018/03/24 全球购物
销售业务实习自我鉴定
2013/09/23 职场文书
年度考核评语
2014/01/19 职场文书
《小猫刮胡子》教学反思
2014/02/21 职场文书
大学军训感言1500字
2014/03/09 职场文书
法律进机关实施方案
2014/03/12 职场文书
敬老月活动总结
2014/08/28 职场文书
优秀教研组申报材料
2014/12/26 职场文书
工作年限证明模板
2015/06/15 职场文书
外出学习心得体会范文
2016/01/18 职场文书
jdbc使用PreparedStatement批量插入数据的方法
2021/04/27 MySQL
Python连续赋值需要注意的一些问题
2021/06/03 Python
微信小程序APP页面的之间的相互传递参数以及自定义组件
2022/04/19 Javascript
GoFrame框架数据校验之校验结果Error接口对象
2022/06/21 Golang