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 相关文章推荐
node.js中RPC(远程过程调用)的实现原理介绍
Dec 05 Javascript
浅谈jQuery中的事件
Mar 23 Javascript
Bootstrap表单组件教程详解
Apr 26 Javascript
Vuejs第十篇之vuejs父子组件通信
Sep 06 Javascript
AngularJS实现按钮提示与点击变色效果
Sep 07 Javascript
JavaScript中三种常见的排序方法
Feb 24 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
Feb 24 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
Jun 28 Javascript
Vue项目实现换肤功能的一种方案分析
Aug 28 Javascript
详解Java中String JSONObject JSONArray List转换
Nov 13 Javascript
Vue router传递参数并解决刷新页面参数丢失问题
Dec 02 Vue.js
JavaScript数组reduce()方法的语法与实例解析
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
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
程序员编程十条戒律
2009/07/09 PHP
php读取html并截取字符串的简单代码
2009/11/30 PHP
微盾PHP脚本加密专家php解密算法
2020/09/13 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
TP5多入口设置实例讲解
2020/12/15 PHP
下载网站打开页面后间隔多少时间才显示下载链接地址的代码
2010/04/25 Javascript
extjs 初始化checkboxgroup值的代码
2011/09/21 Javascript
jQuery之end()和pushStack()使用介绍
2012/02/07 Javascript
jQuery数据缓存功能的实现思路及简单模拟
2013/05/27 Javascript
动态改变div的z-index属性的简单实例
2013/08/08 Javascript
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
JS基于VML技术实现的五角星礼花效果代码
2015/10/26 Javascript
简单学习JavaScript中的for语句循环结构
2015/11/10 Javascript
javascript与jquery中的this关键字用法实例分析
2015/12/24 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
2016/04/06 Javascript
jQuery EasyUI菜单与按钮详解
2016/07/13 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
2016/09/29 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
2016/12/08 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
Mac下安装vue
2018/04/11 Javascript
如何在wxml中直接写js代码(wxs)
2019/11/14 Javascript
详解vue中$nextTick和$forceUpdate的用法
2019/12/11 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
使用Python3制作TCP端口扫描器
2017/04/17 Python
安装python3的时候就是输入python3死活没有反应的解决方法
2018/01/24 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
酒店销售主管岗位职责
2014/01/04 职场文书
教师批评与自我批评
2014/10/15 职场文书
贫困证明书格式及范文
2014/10/15 职场文书
写好求职信的技巧解密
2019/05/14 职场文书
导游词之镇江焦山
2019/11/21 职场文书
java设计模式--三种工厂模式详解
2021/07/21 Java/Android
Redis+Lua脚本实现计数器接口防刷功能(升级版)
2022/02/12 Redis