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实现自定义标签
May 08 Javascript
style、 currentStyle、 runtimeStyle区别分析
Aug 01 Javascript
基于jQuery替换table中的内容并显示进度条的代码
Aug 02 Javascript
JS替换文本域内的回车示例
Feb 18 Javascript
jquery中的常见问题及快速解决方法小结
Jun 14 Javascript
javascript获取网页各种高宽及位置的方法总结
Jul 27 Javascript
javascript实现瀑布流动态加载图片原理
Aug 12 Javascript
Vue.js实现简单动态数据处理
Feb 13 Javascript
常用的几个JQuery代码片段
Mar 13 Javascript
微信小程序实现图片懒加载的示例代码
Dec 13 Javascript
微信小程序结合Storage实现搜索历史效果
May 18 Javascript
vue 导出文件,携带请求头token操作
Sep 10 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
PHP中用header图片地址 简单隐藏图片源地址
2008/04/09 PHP
PHP+Mysql+jQuery实现动态展示信息
2011/10/08 PHP
destoon安全设置中需要设置可写权限的目录及文件
2014/06/21 PHP
php实现的操作excel类详解
2016/01/15 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
基于Jquery的表格隔行换色,移动换色,点击换色插件
2010/12/22 Javascript
jQuery中Datatables增加跳转到指定页功能
2017/02/08 Javascript
解析jquery easyui tree异步加载子节点问题
2017/03/08 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
vue2.0中vue-cli实现全选、单选计算总价格的实例代码
2017/07/18 Javascript
vue 粒子特效的示例代码
2017/09/19 Javascript
vue.js2.0点击获取自己的属性和jquery方法
2018/02/23 jQuery
详解基于vue的服务端渲染框架NUXT
2018/06/20 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
2018/08/30 Javascript
vue多次循环操作示例
2019/02/08 Javascript
js实现弹出框的拖拽效果实例代码详解
2019/04/16 Javascript
webpack实践之DLLPlugin 和 DLLReferencePlugin的使用教程
2019/06/10 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
2020/02/14 Javascript
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
python传递参数方式小结
2015/04/17 Python
python爬虫headers设置后无效的解决方法
2017/10/21 Python
python中实现k-means聚类算法详解
2017/11/11 Python
浅谈python正则的常用方法 覆盖范围70%以上
2018/03/14 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
python下对hsv颜色空间进行量化操作
2020/06/04 Python
Python3交互式shell ipython3安装及使用详解
2020/07/11 Python
PyTorch 中的傅里叶卷积实现示例
2020/12/11 Python
东方通信股份有限公司VC面试题
2014/08/27 面试题
自考生毕业自我鉴定
2013/10/10 职场文书
好的旅游活动方案
2014/08/19 职场文书
个人纪律作风整改措施思想汇报
2014/10/12 职场文书
公司给客户的感谢信
2015/01/23 职场文书
创业计划书之家教中心
2019/09/25 职场文书
MongoDB balancer的使用详解
2021/04/30 MongoDB
撤回我也能看到!教你用Python制作微信防撤回脚本
2021/06/11 Python
安装harbor作为docker镜像仓库的问题
2022/06/14 Servers