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 相关文章推荐
汉化英文版的Dreamweaver CS5并自动提示jquery
Nov 25 Javascript
JavaScript的arguments对象应用示例
Sep 15 Javascript
轻松搞定jQuery.noConflict()
Feb 15 Javascript
jquery 获取select数组与name数组长度的实现代码
Jun 20 Javascript
AngularJS基础 ng-value 指令简单示例
Aug 03 Javascript
基于JavaScript实现树形下拉框
Aug 10 Javascript
vue.js从安装到搭建过程详解
Mar 17 Javascript
Vue.js鼠标悬浮更换图片功能
May 17 Javascript
vue中eventbus被多次触发以及踩过的坑
Dec 02 Javascript
详解JS数值Number类型
Feb 07 Javascript
node.js使用express框架进行文件上传详解
Mar 03 Javascript
linux服务器快速卸载安装node环境(简单上手)
Feb 22 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
ThinkPHP的常用配置选项汇总
2016/03/24 PHP
老生常谈PHP面向对象之解释器模式
2017/05/17 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
php生成静态页面并实现预览功能
2019/06/27 PHP
拖拉表格的JS函数
2008/11/20 Javascript
javascript 特殊字符串
2009/02/25 Javascript
HTTP 304错误的详细讲解
2013/11/13 Javascript
javascript解析xml实现省市县三级联动的方法
2015/07/25 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
2017/05/12 Javascript
JavaScript中发出HTTP请求最常用的方法
2018/07/12 Javascript
JavaScript实现简单轮播图效果
2018/12/01 Javascript
node.js文件的复制、创建文件夹等相关操作
2021/02/05 Javascript
[06:21]2014DOTA2国际邀请赛 庆祝VG首阶段领跑;B叔为挣牛排半夜整理情报
2014/07/13 DOTA
[07:06]2018DOTA2国际邀请赛寻真——卫冕冠军Team Liquid
2018/08/10 DOTA
linux环境下安装pyramid和新建项目的步骤
2013/11/27 Python
详解用Python处理HTML转义字符的5种方式
2017/12/27 Python
Python生成一个迭代器的实操方法
2019/06/18 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
如何在Django中使用聚合的实现示例
2020/03/23 Python
Python基于yaml文件配置logging日志过程解析
2020/06/23 Python
Python3爬虫里关于Splash负载均衡配置详解
2020/07/10 Python
简述python&amp;pytorch 随机种子的实现
2020/10/07 Python
python如何用matplotlib创建三维图表
2021/01/26 Python
检测用户浏览器是否支持CSS3的方法
2009/08/29 HTML / CSS
html2canvas生成清晰的图片实现打印的示例代码
2019/09/30 HTML / CSS
屈臣氏马来西亚官网:Watsons马来西亚
2019/06/15 全球购物
可以使用抽象函数重写基类中的虚函数吗
2013/06/02 面试题
趣味比赛活动方案
2014/02/15 职场文书
捐资助学倡议书
2014/04/15 职场文书
实习报告评语
2014/04/26 职场文书
建筑施工安全责任书
2014/07/24 职场文书
导游词开场白
2015/01/31 职场文书
布达拉宫导游词
2015/02/02 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
草系十大最强宝可梦,纸片人上榜,榜首大家最熟悉
2022/03/18 日漫