for和forEach的区别

for和forEach的区别

  1. for循环可以使用break和continue终止、跳出循环,但forEach不能,可以使用try catch抛出异常;
  2. for循环可以控制循环的起点,forEach只能默认从索引0开始;
  3. for循环过程中支持修改索引,但forEach不能(底层控制索引自增);

forEach参数

arr.forEach(function(self,index,arr){},this)

self:数组当前遍历的元素,默认从左往右依次获取数组元素
index:数组当前元素的索引,第一个元素索引为0,依次类推
arr:当前遍历的数组
this:回调函数中this指向

const arr1 = [1, 2, 3, 4];
const obj = {
    a: 1
}
arr1.forEach(function (self, index, arr) {
    console.log(`当前元素为${self}索引为${index},属于数组${arr}`)
    //做个简单计算
    console.log(self + this.a)
}, obj)

arr:参数其实就是正在遍历的数组arr1
this:指向的是obj

数组去重

let arr1 = [1, 2, 1, 3, 1]
let arr2 = []
arr1.forEach(function (self, index, arr) { // arr就是arr1
    arr.indexOf(self) === index ? arr2.push(self) : null
});
console.log(arr2)  // [1,2,3]

es6数组去重

let arr1 = [1, 2, 1, 3, 1]
console.log([...new Set(arr1)]) 	// [1,2,3]
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
for循环forEach循环在实现和功能上有一些区别。 首先,for循环没有额外的函数调用栈和上下文,所以它的实现最为简单。相比之下,forEach循环的函数签名中包含了参数和上下文,所以性能会稍低于for循环。 其次,使用for循环打印数组的每个值时,并不会打印出来扩展JS原生的Array类的属性和方法,而使用forEach循环则可以打印出来。这是因为forEach会遍历数组的每一项,包括数组的属性和方法。 另外,当for循环中包含异步语句时,初次遍历时,进入到最里面的异步函数时,打印的值可能会是数组的最后一项,因为for循环已经循环完了。但是利用forEach循环,可以打印出数组中的每一项,不受异步影响。这是一个在使用过程中需要注意的区别。 综上所述,for循环forEach循环在实现和功能上有一些区别,根据具体的需求可以选择使用适合的循环方式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [for与forEach区别](https://blog.csdn.net/u012174809/article/details/124803603)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值