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的作者将之做为一 ...
随机推荐
- GIS常用npm包:GeoJSON文件合并与元素过滤\属性过滤\图形合并
GeoJSON文件合并 普通的geoJSON文件合并,只需geojson-merge插件就够了,https://www.npmjs.com/package/@mapbox/geojson-merge ...
- 8个方法管理 GitHub 用户权限
如同世界正在经历的疫情,由于网络攻击的大幅增加,许多公司也遭受着"网络疫情",保障代码安全迫在眉睫.在之前的文章中我们了解了安全使用 GitHub 的21条最佳实践.阅读本文,将带 ...
- 渗透测试 vs 漏洞扫描:差异与不同
渗透测试和漏洞扫描常常被混淆,这两者都通过探索系统来寻找 IT 基础架构中的弱点及易受攻击的地方.阅读本文,带你了解两者之间的差异与不同. 手动 vs 自动 渗透测试是一种手动安全评估方式,网络安全人 ...
- 克服 ClickHouse 运维难题:ByteHouse 水平扩容功能上线
前言 对于分析型数据库产品,通过增加服务节点实现集群水平扩容,并提升集群性能和容量,是运维的必要手段. 但是对于熟悉 ClickHouse 的工程师而言,听到"扩容"二字一定会头疼 ...
- WPF 对Border 边框进行投影
画一个 Border 对边框进行投影 <Window x:Class="WpfApp1.MainWindow" xmlns="http://schemas.micr ...
- CNCF大使预测:2024年云原生面临倦怠、离职及云成本精简
本文由 CNCF 大使 Eric D. Schabell 撰写,预测2024年云原生领域最可能发生的3大变化,并与其对云原生可观测性领域的见解结合. 关注云原生倦怠 毫无疑问,在 2023 年中云原生 ...
- SpringBoot 项目实战 | 瑞吉外卖 Day01
一.软件开发整体介绍 1.软件开发流程 2.角色分工 项目经理:对整个项目负责,任务分配.把控进度 产品经理:进行需求调研,输出需求调研文档.产品原型等 UI设计师:根据产品原型输出界面效果图 架构师 ...
- Problem 1342B - Binary Period (思维)
AC代码: #include<bits/stdc++.h> using namespace std; int main() { //freopen("in.txt", ...
- <vue初体验> 基础知识 4、 vue的生命周期
系列导航 <vue初体验> 一. vue的引入和使用体验 <vue初体验> 二. vue的列表展示 <vue初体验> 三. vue的计数器 <vue初体验&g ...
- websocket扫码登录
二维码由web端生成,解析结果 https://www.qycloud.com.cn/home/welcome?{"type":"login","da ...