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 相关文章推荐
jquery $.ajax入门应用一
Nov 19 Javascript
JavaScript截取字符串的Slice、Substring、Substr函数详解和比较
Mar 20 Javascript
Javascript堆排序算法详解
Dec 03 Javascript
node.js中的fs.writeFile方法使用说明
Dec 14 Javascript
jQuery实现鼠标滑向当前图片高亮显示并且其它图片变灰的方法
Jul 27 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
Feb 19 Javascript
理解javascript对象继承
Apr 17 Javascript
JS实现消息来时让网页标题闪动效果的方法
Apr 20 Javascript
javascript设计模式之Adapter模式【适配器模式】实现方法示例
Jan 13 Javascript
jQuery实现移动端Tab选项卡效果
Mar 15 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
Aug 21 Javascript
jQuery 隐藏/显示效果函数用法实例分析
May 20 jQuery
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
基于HTTP长连接的&quot;服务器推&quot;技术的php 简易聊天室
2009/10/31 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
让你的PHP7更快之Hugepage用法分析
2016/05/31 PHP
详谈php ip2long 出现负数的原因及解决方法
2017/04/05 PHP
PHP数据库操作三:redis用法分析
2017/08/16 PHP
巧妙破除网页右键禁用的十大绝招
2006/08/12 Javascript
一个可绑定数据源的jQuery数据表格插件
2010/07/17 Javascript
详解JavaScript函数绑定
2013/08/18 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
使用JavaScript获取地址栏参数的方法
2014/12/19 Javascript
Node.js实现Excel转JSON
2015/04/24 Javascript
Javascript仿新浪游戏频道鼠标悬停显示子菜单效果
2015/08/21 Javascript
js实现图片无缝滚动特效
2020/03/19 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
2016/10/11 Javascript
angularjs指令之绑定策略(@、=、&amp;)
2017/04/13 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
在Vue中使用Compass的方法
2018/03/02 Javascript
Vuex 快速入门(简单易懂)
2018/09/20 Javascript
抖音上用记事本编写爱心小程序教程
2019/04/17 Javascript
[58:15]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 NB vs Liquid
2018/04/02 DOTA
python实现爬虫下载漫画示例
2014/02/16 Python
pygame学习笔记(4):声音控制
2015/04/15 Python
Python的__builtin__模块中的一些要点知识
2015/05/02 Python
python 重命名轴索引的方法
2018/11/10 Python
Python批量处理csv并保存过程解析
2020/05/16 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
Hibernate持久层技术
2013/12/16 面试题
《第一朵杏花》教学反思
2014/04/16 职场文书
师范生自荐信模板
2014/05/28 职场文书
2014年科普工作总结
2014/12/06 职场文书
python读取pdf格式文档的实现代码
2021/04/01 Python
如何用python绘制雷达图
2021/04/24 Python
评测 | 大屏显示带收音机的高端音箱,JBL TUNE2便携式插卡音箱实测
2021/04/24 无线电
用Python生成会跳舞的美女
2022/01/18 Python
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis