定义和用法

forEach() 调用数组的每个元素,并将元素传递给回调函数。
注意: forEach() 对于空数组是不会执行回调函数的。 用法:
array.forEach(function(currentValue, index, arr), thisValue)
1==> currentValue 必需。当前元素
2==> index 可选。当前元素的索引值,是数字类型的
3==> arr 可选。当前元素所属的数组对象
4==> 可选。传递给函数的值一般用 "this" 值。
如果这个参数为空, "undefined" 会传递给 "this" 值

forEach 的注意点

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

运用的场景(计算数字之和)

1.计算数组所有元素相加的总和:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
let sum = 0;
arr.forEach((currentIndex, index, curArr) => {
sum += currentIndex
// sum=sum+currentIndex
})
console.log('之和是', sum);

运用的场景(给原始数组新增key值)

//给原始数组的每一项新增一个属性值
let arr = [{
id: '001',
name: '张三1'
}, {
id: '002',
name: '张三2'
}, {
id: '003',
name: '张三2'
}];
//给原始数组的每一项新增一个属性值
arr.forEach((item, index) => {
item['addAttrs'] = ''
})
console.log('arr', arr); --使用for of来出处理--
for (let item of arr) {
item['index'] = ''
}
console.log('arr', arr);

forEach 跳出当前的循环 return

//内容为3,不遍历该项
var arr = [1, 2, 3];
arr.forEach(function(item) {
if (item === 3) {
return;
}
console.log(item);
});

forEach结合try跳出整个循环

//找到id为002,然后终止整个循环,返回当前这一项的值。
//使用 try-catch完成的
代码如下 let arr = [{
id: '001',
name: '张三1'
}, {
id: '002',
name: '张三2'
}, {
id: '003',
name: '张三2'
}]; // 使用forEach跳出整个循环,使用rty-catch
function useForeach(Arr) {
let obj = {}
try {
Arr.forEach(function(item) {
if (item.id == '002') {
// 找到目标项,赋值。然后抛出异常
obj = item
throw new Error('return false')
}
});
} catch (e) {
// 返回id===002的这一项的数据
return obj
}
}
console.log(useForeach(arr))

forEach 与for循环的区别 【面试题】

1==> for可以用continue跳过当前循环中的一个迭代,forEach 用continue会报错。但是可以使用return来跳出当前的循环
2==> for可以使用break来跳出整个循环,forEach正常情况无法跳出整个循环。
如果面试官问:如果非要跳出forEach中的循环,可以抛出一个异常来处理

js中forEach的用法、forEach如何跳出循环、forEach与for之间的区别的更多相关文章

  1. 浅谈JS中 reduce() 的用法

    过去有很长一段时间,我一直很难理解 reduce() 这个方法的具体用法,平时也很少用到它.事实上,如果你能真正了解它的话,其实在很多地方我们都可以用得上,那么今天我们就来简单聊聊JS中 reduce ...

  2. JS中 reduce() 的用法

    过去有很长一段时间,我一直很难理解 reduce() 这个方法的具体用法,平时也很少用到它.事实上,如果你能真正了解它的话,其实在很多地方我们都可以用得上,那么今天我们就来简单聊聊JS中 reduce ...

  3. [转载]js中return的用法

    一.返回控制与函数结果,语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果 二.返回控制,无函数结果,语法为:return;  在大多数情况下,为事件处理函 ...

  4. js中this的用法

    经过近几周的模拟面试题,我查询了一些资料,今天就来说说,在js中this的用法吧.方法有四:第一,用作全局变量,第二,用作表该对象,第三,用作构造函数,第四,用作call和applay

  5. JQuery之append和appendTo的区别,还有js中的appendChild用法

    JQuery之append和appendTo的区别 append()前面是要选择的对象,后面是要在对象内插入的元素内容 appendTo()前面是要插入的元素内容且为Jquery对象,而后面是要选择的 ...

  6. JS中event.keyCode用法及keyCode对…

    js中event.keyCode用法及keyCode对照表 标签: javascriptJavaScriptJavascriptjavaScript 2012-12-11 15:11 HTML Jav ...

  7. JS中for,for...in,for...of以及foreach循环的用法

    1.for()循环 // for循环的表达式之间用的是;号分隔的,千万不要写成, for (初始化表达式1; 判断表达式2; 自增表达式3) { // 循环体4 } 2.for...in索引遍历 va ...

  8. JS中的this用法详解

    随着对js的深入学习和使用,你会发现它里面包含了很多令人困惑的机制,比如对象.闭包.原型链继承等等,而这其中肯定包含令你现在或者曾经费解的this,如果你不把心一横,花点时间还真不明白这个this的用 ...

  9. JS中document.createElement()用法及注意事项

    今天处理了一个日期选择器的ie和ff的兼容问题,本来这种情况就很难找错误,找了好久才把错误定位到js中创建元素的方法document.createElement(),这个方法在ie下支持这样创建元素 ...

  10. JS中$含义和用法

    原博客:https://www.cnblogs.com/jokerjason/p/7404649.html$在JS中本身只是一个符号而异,在JS里什么也不是.但在JS应用库JQUERY的作者将之做为一 ...

随机推荐

  1. Colocate Join :ClickHouse的一种高性能分布式join查询模型

    摘要:本文将介绍业界MPP分布式数据库join查询模型,以及ClickHouse的分布式查询原理解析和Colocate join性能表现. 本文分享自华为云社区<ClickHouse一种高性能分 ...

  2. 毕昇 JDK:为啥是ARM 上超好用的 JDK

    摘要:毕昇 JDK 是华为基于 OpenJDK 定制的开源版本,是一款高性能.可用于生产环境的 OpenJDK 发行版. 本文分享自华为云社区<[云驻共创]毕昇 JDK:"传奇再现&q ...

  3. 跟我学Python图像处理丨5种图像阈值化处理及算法对比

    摘要:本篇文章主要讲解Python调用OpenCV实现图像阈值化处理操作,包括二进制阈值化.反二进制阈值化.截断阈值化.反阈值化为0.阈值化为0. 本文分享自华为云社区<[Python图像处理] ...

  4. IAST 初探:博采众长、精准定位、DevOps友好

    之前的文章中,我们了解了 SAST 和 DAST,本文将介绍将两者优势相结合的安全测试技术--IAST. ✦ ✦ 交互式应用安全测试(IAST)是一个自动识别和诊断应用程序和 API 漏洞的技术,它结 ...

  5. Codeforces Round 908 (Div. 2)

    总结 T1 题目大意: A,B两人玩游戏,游戏规则如下: 整场游戏有多轮,每轮游戏先胜 \(X\) 局的人获胜,每场游戏先胜 \(Y\) 局的人获胜. 你在场边观看了比赛,但是你忘记了 \(x\) 和 ...

  6. L2-016 愿天下有情人都是失散多年的兄妹 (25分) (简单递归判断)

    L2-016 愿天下有情人都是失散多年的兄妹 (25分) 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚.本题就请你帮助一 ...

  7. 技术文档丨 OpenSCA技术原理之npm依赖解析

    本文主要介绍基于npm包管理器的组件成分解析原理. npm介绍 npm(全称Node Package Manager)是Node.js标准的软件包管理器. npm的依赖管理文件是package.jso ...

  8. vue用qrcodejs2生成二维码,解决多个二维码追加的问题

    vue使用qrcodejs2生成二维码 1.安装qrcodejs2 npm install qrcodejs2 2.代码 //导入组件 import QRCode from 'qrcodejs2' / ...

  9. 高级数据结构---B树和B+树及mysql索引分析

    mysql索引数据结构:https://www.cnblogs.com/nijunyang/p/11406688.html 几种树结构的对比: 二叉查找树:二叉搜索树,二叉排序树,优点查找快,但是在某 ...

  10. vscode prettier保存代码时自动格式化

    https://blog.csdn.net/qq_37815596/article/details/109225879