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 相关文章推荐
js中的window.open返回object的错误的解决方法
Aug 15 Javascript
jquery 防止表单重复提交代码
Jan 21 Javascript
jQuery 1.5 源码解读 面向中高阶JSER
Apr 05 Javascript
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
Nov 12 Javascript
几种响应式文字详解
May 19 Javascript
D3.js进阶系列之CSV表格文件的读取详解
Jun 06 Javascript
解析vue中的$mount
Dec 21 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
Aug 27 Javascript
Vue自定义组件双向绑定实现原理及方法详解
Sep 03 Javascript
vue下载二进制流图片操作
Oct 26 Javascript
Vue实现下拉加载更多
May 09 Vue.js
JS中forEach()、map()、every()、some()和filter()的用法
May 11 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 字符转义 注意事项
2009/05/27 PHP
php 传值赋值与引用赋值的区别
2010/12/29 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
2015/04/21 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
jquery如何改变html标签的样式(两种实现方法)
2013/01/16 Javascript
Jquery Uploadify多文件上传带进度条且传递自己的参数
2013/08/28 Javascript
JS简单实现文件上传实例代码(无需插件)
2013/11/15 Javascript
js螺旋动画效果的具体实例
2013/11/15 Javascript
jQuery层动画定位滑动效果的方法
2015/04/30 Javascript
详细探究ES6之Proxy代理
2016/07/22 Javascript
AngularJS中实现动画效果的方法
2016/07/28 Javascript
在一个页面重复使用一个js函数的方法详解
2016/12/26 Javascript
js遍历json的key和value的实例
2017/01/22 Javascript
vue中appear的用法
2017/08/17 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
2017/11/28 Javascript
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
2018/09/11 Javascript
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
微信小程序Page中data数据操作和函数调用方法
2019/05/08 Javascript
关于vue的列表图片选中打钩操作
2020/09/09 Javascript
[01:14:19]NAVI vs Mineski 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
python使用marshal模块序列化实例
2014/09/25 Python
python之文件的读写和文件目录以及文件夹的操作实现代码
2016/08/28 Python
Python入门_浅谈for循环、while循环
2017/05/16 Python
Python通过属性手段实现只允许调用一次的示例讲解
2018/04/21 Python
Python返回数组/List长度的实例
2018/06/23 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
python实现按行分割文件
2019/07/22 Python
Python判断字符串是否xx开始或结尾的示例
2019/08/08 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
意大利在线购买隐形眼镜网站:VisionDirect.it
2019/03/18 全球购物
荷兰在线啤酒店:Beerwulf
2019/08/26 全球购物
设计模式的基本要素是什么
2014/04/21 面试题
安全协议书
2014/04/23 职场文书
2015年数学教师工作总结
2015/05/20 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书