js中 for、forEach、for...in、for...of循环的区别和使用

简介: js中 for、forEach、for...in、for...of循环的区别和使用

前端面试题库 (面试必备)            推荐:★★★★★

地址:前端面试题库

js中 for、forEach、for...in、for...of循环的区别

我们全部以以下数组举例

var arr = [1,2,3,4,5];

for循环

for(语句 1; 语句 2; 语句 3){}for 循环是 Js 中最常用的一个遍历方式,经常用于数组的循环遍历,可以遍历字符串、数组、类数组对象,但不可以遍历对象

for (var i = 0; i < arr.length; i++){ 
    console.log(arr[i]); 
}
//控制台依次打印1 2 3 4 5
  • for循环中,可以用break终止全部循环,用continue跳出一层循环

for...in循环

for (key in object){}for...in 属于 JavaScript 中的循环结构,是 for 循环的两种变体,但是for...in循环可以遍历对象

  • for..in循环不适合遍历数组,因为for...in 循环的遍历顺序是不确定的,可能会出错
  • for...in 循环返回的(key)是每个属性的键名(属性名),类型即字符串类型。
  • object有多少成员,就会执行多少次
//遍历对象
const obj = { a: 1, b: 2, c: 3 };
for (const x in obj) {
  console.log(x); // 打印输出:a, b, c
  console.log(obj[x])//打印输出:1,2,3
}
//遍历数组
for(let i in arr){
  console.log(i); // 打印输出:0, 1, 2,3,4
  console.log(arr[i])//打印输出:1,2,3,4,5
}

for...of循环

for (variable of iterable){}for...of 循环返回的是可迭代对象的元素值,即对应的值类型for...of语句在可迭代对象(包括 ArrayMapSetStringTypedArrayarguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句

  • for...of 循环返回的(variable)是可迭代对象的元素值,类型即对应的值类型
  • 可以正确响应 break、continue 和 return 语句
for(let i in arr){
  console.log(i); // 打印输出:1, 2,3,4,5
}

forEach循环(数组中独有)

forEach循环是js数组的一个内置循环方法,它提供了一种简洁的方式来遍历数组的每个元素,并对每个元素执行指定的操作,它提供了一种简洁的方式来遍历数组的每个元素,并对每个元素执行指定的操作

array.forEach(callback(currentValue, index, array) {
  // 执行针对当前元素的操作
},thisValue);
  • array:要遍历的数组。
  • callback:回调函数,定义要在数组的每个元素上执行的操作。
  • currentValue:当前正在处理的元素。
  • index:当前元素的索引。
  • array:原始数组。

举例:

arr.forEach((number,i) => {
  console.log("currentValue",number);
  console.log("index",i);
});

结果:

  • forEach() 本身是不支持的 continue 与 break 语句的,我们可以通过 someevery 来实现。使用 return 语句实现 continue 关键字的效果:

总结

  • for、for...in、forEach在处理数组时都可以获得数组下标,处理数组最好不用for...in
  • 处理对象且需要拿到键首选for..in,可以获得键和值
  • 只获得值首选for...of,支持类型多,语法简单,比如只要遍历拿数组的值
  • forEach只在数组中有,在数组中要获得数组下标和内容且循环为数组长度可选用forEach,forEach 可以通过设定参数来存储索引下标、数据数值.这样在操作上更加的便利

前端面试题库 (面试必备)            推荐:★★★★★

地址:前端面试题库

相关文章
|
JavaScript 前端开发 容器
this、self、window、top 在 JavaScript 中的区别深入研究
在 JavaScript 开发中,`this`、`self`、`window` 和 `top` 是四个常用的概念。`this` 指向当前执行上下文的对象,其值取决于函数调用方式;`self` 在全局作用域中等同于 `window`,常用于 Web Workers;`window` 代表浏览器窗口,是全局变量的容器;`top` 指向最顶层窗口,用于判断是否在框架中。理解这些概念有助于编写健壮的代码。
456 1
this、self、window、top 在 JavaScript 中的区别深入研究
|
移动开发 运维 供应链
通过array.some()实现权限检查、表单验证、库存管理、内容审查和数据处理;js数组元素检查的方法,some()的使用详解,array.some与array.every的区别(附实际应用代码)
array.some()可以用来权限检查、表单验证、库存管理、内容审查和数据处理等数据校验工作,核心在于利用其短路机制,速度更快,节约性能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
供应链 JavaScript 前端开发
通过array.every()实现数据验证、权限检查和一致性检查;js数组元素检查的方法,every()的使用详解,array.some与array.every的区别(附实际应用代码)
array.every()可以用来数据验证、权限检查、一致性检查等数据校验工作,核心在于利用其短路机制,速度更快,节约性能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
消息中间件 JavaScript 前端开发
最细最有条理解析:事件循环(消息循环)是什么?为什么JS需要异步
度一教育的袁进老师谈到他的理解:单线程是异步产生的原因,事件循环是异步的实现方式。 本质是因为渲染进程因为计算机图形学的限制,只能是单线程。所以需要“异步”这个技术思想来解决页面阻塞的问题,而“事件循环”是实现“异步”这个技术思想的最主要的技术手段。 但事件循环并不是全部的技术手段,比如Promise,虽然受事件循环管理,但是如果没有事件循环,单一Promise依然能实现异步不是吗? 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您
|
JavaScript 前端开发
js中的bind,call,apply方法的区别以及用法
JavaScript中,`bind`、`call`和`apply`均可改变函数的`this`指向并传递参数。其中,`bind`返回一个新函数,不立即执行;`call`和`apply`则立即执行,且`apply`的参数以数组形式传递。三者在改变`this`指向及传参上功能相似,但在执行时机和参数传递方式上有所区别。
488 1
|
设计模式 JavaScript 前端开发
js中new和object.creat区别
【10月更文挑战第29天】`new` 关键字和 `Object.create()` 方法在创建对象的方式、原型链继承、属性初始化以及适用场景等方面都存在差异。在实际开发中,需要根据具体的需求和设计模式来选择合适的方法来创建对象。
|
JavaScript 前端开发 索引
问js的forEach和map的区别
JavaScript中的`forEach`和`map`都是数组迭代方法。`forEach`遍历数组但不修改原数组,无返回值;它接受回调函数处理元素。`map`则遍历数组并返回新数组,新数组元素为回调函数处理后的结果。两者都接收元素、索引和数组作为回调函数参数。
313 7
|
存储 JavaScript 前端开发
面试题:问js的forEach和map的区别
面试题:问js的forEach和map的区别
236 0
|
前端开发 JavaScript 索引
浅谈 Javascript 中的 forEach 和 map 之间的区别
在 Javascript 中数组的迭代最常用的两个函数:forEach和map。可能很多人认为这两个函数在工作方式上是相同的,它们都进行迭代并输出数组的每一项。本文就来介绍一下forEach和map的差异,并因此加深对两个函数的理解。
319 0
浅谈 Javascript 中的 forEach 和 map 之间的区别

热门文章

最新文章