js遍历详解(forEach, map, for, for...in, for...of)

作者:寻易之客 时间:2024-04-29 13:20:06 

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;
}
}

来源:https://www.cnblogs.com/harsin/p/11421504.html

标签:js,遍历
0
投稿

猜你喜欢

  • 完美解决webstorm启动索引文件卡死的问题

    2022-04-05 05:52:29
  • Keras之fit_generator与train_on_batch用法

    2021-07-10 18:19:31
  • swoole_process实现进程池的方法示例

    2024-06-05 15:40:23
  • 日常收集整理的Git常用命令

    2022-10-03 08:12:40
  • 如何通过python计算圆周率PI

    2021-01-24 10:29:25
  • 一文搞懂Golang文件操作增删改查功能(基础篇)

    2024-04-28 09:13:43
  • sqlserver 多表查询不同数据库服务器上的表

    2012-04-13 11:41:51
  • 如何卸载python插件

    2023-11-21 22:24:31
  • 怎么用FSO生成一个UNICODE格式的文本文件

    2009-05-26 15:40:00
  • Python3使用requests模块实现显示下载进度的方法详解

    2021-03-26 21:14:52
  • 通过SQL Server的位运算功能巧妙解决多选查询方法

    2012-01-29 17:54:35
  • 与MSSQL对比学习MYSQL的心得(四)--BLOB数据类型

    2024-01-20 12:32:53
  • Oracle PL/SQL语言入门基础

    2010-07-20 13:28:00
  • MySQL查询优化:连接查询排序limit(join、order by、limit语句)介绍

    2024-01-21 19:06:16
  • 解决keras加入lambda层时shape的问题

    2023-05-19 17:47:29
  • Python GUI和游戏开发从入门到实践

    2021-01-09 15:30:47
  • SQLSERVER数据库备份后无法还原的解决办法

    2024-01-21 14:05:01
  • Echarts基本入门之柱状图、折线图通用配置

    2024-04-28 09:37:10
  • 浅析python中的分片与截断序列

    2022-05-11 02:31:03
  • Python 通过requests实现腾讯新闻抓取爬虫的方法

    2022-03-19 17:17:02
  • asp之家 网络编程 m.aspxhome.com