js中forEach的用法、forEach如何跳出循环、forEach与for之间的区别
定义和用法
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之间的区别的更多相关文章
- 浅谈JS中 reduce() 的用法
过去有很长一段时间,我一直很难理解 reduce() 这个方法的具体用法,平时也很少用到它.事实上,如果你能真正了解它的话,其实在很多地方我们都可以用得上,那么今天我们就来简单聊聊JS中 reduce ...
- JS中 reduce() 的用法
过去有很长一段时间,我一直很难理解 reduce() 这个方法的具体用法,平时也很少用到它.事实上,如果你能真正了解它的话,其实在很多地方我们都可以用得上,那么今天我们就来简单聊聊JS中 reduce ...
- [转载]js中return的用法
一.返回控制与函数结果,语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果 二.返回控制,无函数结果,语法为:return; 在大多数情况下,为事件处理函 ...
- js中this的用法
经过近几周的模拟面试题,我查询了一些资料,今天就来说说,在js中this的用法吧.方法有四:第一,用作全局变量,第二,用作表该对象,第三,用作构造函数,第四,用作call和applay
- JQuery之append和appendTo的区别,还有js中的appendChild用法
JQuery之append和appendTo的区别 append()前面是要选择的对象,后面是要在对象内插入的元素内容 appendTo()前面是要插入的元素内容且为Jquery对象,而后面是要选择的 ...
- JS中event.keyCode用法及keyCode对…
js中event.keyCode用法及keyCode对照表 标签: javascriptJavaScriptJavascriptjavaScript 2012-12-11 15:11 HTML Jav ...
- JS中for,for...in,for...of以及foreach循环的用法
1.for()循环 // for循环的表达式之间用的是;号分隔的,千万不要写成, for (初始化表达式1; 判断表达式2; 自增表达式3) { // 循环体4 } 2.for...in索引遍历 va ...
- JS中的this用法详解
随着对js的深入学习和使用,你会发现它里面包含了很多令人困惑的机制,比如对象.闭包.原型链继承等等,而这其中肯定包含令你现在或者曾经费解的this,如果你不把心一横,花点时间还真不明白这个this的用 ...
- JS中document.createElement()用法及注意事项
今天处理了一个日期选择器的ie和ff的兼容问题,本来这种情况就很难找错误,找了好久才把错误定位到js中创建元素的方法document.createElement(),这个方法在ie下支持这样创建元素 ...
- JS中$含义和用法
原博客:https://www.cnblogs.com/jokerjason/p/7404649.html$在JS中本身只是一个符号而异,在JS里什么也不是.但在JS应用库JQUERY的作者将之做为一 ...
随机推荐
- 云小课 | 网络知识一箩筐——NAT网关,让IP地址华丽变身,轻松实现内外网互通
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课) 或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: 网络知识一箩筐 ...
- java并发编程(1):Java多线程-基本线程类-基础知识复习笔记
复习资料:<同步与异步:并发/并行/进程/线程/多cpu/多核/超线程/管程 > 基本线程类 基本线程类 基本线程类指的是Thread类,Runnable接口,Callable接口 继承T ...
- vivo悟空活动中台-打造 Nodejs 版本的MyBatis
经典的架构设计可以跨越时间和语言,得以传承. -- 题记 一.背景 悟空活动中台技术文章系列又和大家见面了,天气渐冷,注意保暖. 在往期的系列技术文章中我们主要集中分享了前端技术的方方面面,如微组件的 ...
- SQL常用日期格式化转换与百分数转换
目录 SQL将小数转为保留两位的百分数 常用的日期格式化 补充: 秒/毫秒转为持续时间 常用拼接方式: 本篇开启数据库在工作中常用到的格式转换与工具,欢迎大家评论留言 SQL将小数转为保留两位的百分数 ...
- 当 Rokid 遇上函数计算
作者:王彬(阿里云解决方案架构师).姚兰天(Rokid 技术专家).聂大鹏(阿里云高级技术专家) 公司背景和业务 Rokid 创立于2014年,是一家专注于人机交互技术的产品平台公司.Rokid 通过 ...
- 一次完整的HTTP服务过程
- docker 安装 nacos
转载请注明出处: https://www.jianshu.com/p/54f6da71ac48
- ABP微服务系列学习-搭建自己的微服务结构(二)
在解决方案根目录添加common.props,这个文件的作用是可以配置项目文件全局的一些属性,如忽略警告,全局PackageReference,语言版本等. <Project> <P ...
- 【Altium Designer】五颜六色标识的PCB布板(增强PCB可视化特性)
出现上图中五颜六色的网络标识,对比各个网络会更加清晰,实现步骤如下 打开或关闭 View--->Net Color Override Active 快捷键 F5 设置 displa ...
- 【mysql】 解决 auto_increment 字段 Column count doesn't match value count at row 1
1, 表结构 man +-------+-------------+------+-----+---------+----------------+| id | int(11) | NO | PR ...