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 相关文章推荐
Array.slice()与Array.splice()的返回值类型
Oct 09 Javascript
地址栏上的一段语句,改变页面的风格。(教程)
Apr 02 Javascript
深入理解JSON数据源格式
Jan 10 Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
Dec 19 Javascript
javascript无刷新评论实现方法
May 13 Javascript
vue表单绑定实现多选框和下拉列表的实例
Aug 12 Javascript
详解用函数式编程对JavaScript进行断舍离
Sep 18 Javascript
JavaScript函数绑定用法实例分析
Nov 14 Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
Jan 25 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
Jul 13 Javascript
微信小程序实现弹出菜单动画
Jun 21 Javascript
实例讲解React 组件
Jul 07 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
phpMyAdmin下载、安装和使用入门教程
2007/05/31 PHP
PHP MemCached高级缓存配置图文教程
2010/08/05 PHP
php二维数组排序详解
2013/11/06 PHP
PHP中如何实现常用邮箱的基本判断
2014/01/07 PHP
更改localhost为其他名字的方法
2014/02/10 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
Jquery知识点一 Jquery的ready和Dom的onload的区别
2011/01/15 Javascript
JS自动适应的图片弹窗实例
2013/06/29 Javascript
javascript类型转换使用方法
2014/02/08 Javascript
js特殊字符过滤的示例代码
2014/03/05 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
2015/02/24 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
javascript制作的简单注册模块表单验证
2015/04/13 Javascript
JavaScript汉诺塔问题解决方法
2015/04/21 Javascript
实例讲解使用原生JavaScript处理AJAX请求的方法
2016/05/10 Javascript
DOM中事件处理概览与原理的全面解析
2016/08/16 Javascript
jQuery实现元素的插入
2017/02/27 Javascript
jQuery滚动插件scrollable.js用法分析
2017/05/25 jQuery
JavaScript实现美化滑块效果
2019/05/17 Javascript
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:奇迹哥卡尔秀翻全场
2017/03/28 DOTA
Python3.x版本中新的字符串格式化方法
2015/04/24 Python
对python中Json与object转化的方法详解
2018/12/31 Python
tensorflow图像裁剪进行数据增强操作
2020/06/30 Python
通过代码实例了解Python sys模块
2020/09/14 Python
css3 给背景设置渐变色的方法
2019/09/12 HTML / CSS
css3实现背景颜色渐变让图片不再是唯一的实现方式
2012/12/18 HTML / CSS
解锁canvas导出图片跨域的N种姿势小结
2019/01/24 HTML / CSS
伦敦时尚生活的缩影:LN-CC
2017/01/24 全球购物
设计师珠宝:Ylang 23
2018/05/11 全球购物
基于Python 函数和方法的区别说明
2021/03/24 Python
教师自荐信
2013/12/10 职场文书
教育技术学专业职业规划书
2014/03/03 职场文书
竞聘书模板
2014/03/31 职场文书
奥林匹克的口号
2014/06/13 职场文书
2019最新婚庆对联集锦!
2019/07/10 职场文书
python神经网络编程之手写数字识别
2021/05/08 Python