当前位置: 首页 > ops >正文

小知识:for of,for in与forEach

1.  for of  循环

 作用:

遍历可迭代对象(如数组、字符串、Map、Set 等)的值。

特点:

- 直接获取元素的值,而非索引或键。

- 支持  break 、 continue  中断循环。

- 不能直接遍历对象(普通对象不可迭代,需配合  Object.keys()  等)。

示例:

const arr = [10, 20, 30];

for (const value of arr) {

  console.log(value); // 10、20、30

  if (value === 20) break; // 可中断循环

}

 

// 遍历字符串

const str = "hello";

for (const char of str) {

  console.log(char); // h、e、l、l、o

}

2.  for in  循环

 作用:

遍历对象的可枚举属性(包括继承的属性),或数组的索引。

特点: 

- 主要用于遍历对象,获取属性名;遍历数组时获取索引(字符串类型)。

- 会遍历原型链上的属性,需用  hasOwnProperty()  过滤自身属性。

- 支持  break 、 continue  中断循环。

示例:

// 遍历对象

const obj = { name: "Tom", age: 18 };

for (const key in obj) {

  // 过滤继承的属性

  if (obj.hasOwnProperty(key)) {

    console.log(key, obj[key]); // name Tom、age 18

  }

}

 

// 遍历数组(不推荐,索引是字符串)

const arr = [10, 20, 30];

for (const index in arr) {

  console.log(index, arr[index]); // 0 10、1 20、2 30(index 是字符串 "0"、"1" 等)

}

3.  forEach  方法

 作用:

数组的内置方法,用于遍历数组的每个元素。

特点:

- 仅适用于数组(或类数组对象),接收回调函数,参数为  (value, index, array) 。

- 无法用  break 、 continue  中断循环( return  仅跳过当前次循环)。

- 没有返回值(默认返回  undefined )。

示例:

const arr = [10, 20, 30];

arr.forEach((value, index, array) => {

  console.log(value, index); // 10 0、20 1、30 2

  if (value === 20) return; // 仅跳过当前次,不会中断整个循环

});

  最佳实践

 

- 遍历数组/字符串的值:优先用  for of 。

- 遍历对象的属性:用  for in  并配合  hasOwnProperty() 。

- 数组简单遍历且不需要中断:用  forEach (代码更简洁)。

- 需中断循环时,避免用  forEach ,选择  for of  或普通  for  循环。

http://www.xdnf.cn/news/17747.html

相关文章:

  • Spark Shuffle机制原理
  • 图论(5)最小生成树算法
  • 计算机视觉Open-CV
  • OpenCV图像处理2:边界填充与平滑滤波实战
  • 23.Linux : ftp服务及配置详解
  • C语言指针使用
  • Python网络爬虫(二) - 解析静态网页
  • 【ai写代码】lua-判断表是否被修改
  • 分布式事务、锁、链路追踪
  • 地测管理部绩效考核关键指标与地质数据分析
  • 嵌入式 - Linux软件编程:进程
  • C01:内存操作函数
  • Origin绘制正态分布直方图+累积概率图|科研论文图表教程(附数据格式模板)
  • 可信搜索中的多重签名
  • mysql——count(*)、count(1)和count(字段)谁更快?有什么区别?
  • QLab Pro for Mac —— 专业现场音频与多媒体控制软件
  • Unity Shader unity文档学习笔记(十九):粘土效果,任意网格转化成一个球(顶点动画,曲面着色器)
  • 【代码随想录day 20】 力扣 669. 修剪二叉搜索树
  • 【CLR via C#(第3版)阅读笔记】类型基础
  • PostgreSQL——视图
  • 嵌入式C/C++面试大全
  • Gradle(四)Maven 项目迁移 Gradle 项目实践
  • spring mvc HttpMessageConverter 消息转换器
  • 【KALI】第一篇 安装Kali Linux虚拟机之详细操作步骤讲解
  • CNN - 卷积层
  • 利用 Java 爬虫按图搜索 1688 商品(拍立淘)实战指南
  • 高效TypeScript开发:VSCode终极配置指南
  • Varjo XR虚拟现实军用车辆驾驶与操作培训
  • 【MATLAB代码】滑动窗口均值滤波、中值滤波、最小值/最大值滤波对比。订阅专栏后可查看完整代码
  • OpenCV中对图像进行平滑处理的4种方式