JavaScript的Array的forEach(),map()

forEach():

按索引值升序顺序,遍历每一项

方法是对每一个元素执行一次提供的函数,这也是它不能被跳出的原因

  1. .不直接改变原数组,但如果在其callback中操作数组(回调中的第三个参数),也会改变数组。
  2. .总是会返回一个undefined。
  3. .不能break和return,除非是利用抛出异常的方式跳出循环。
  4. .其callback回调函数通常接收3个参数:
  5. 遍历时新添加的项不会被遍历到,若原有项发生改变,便利的是在遍历它时当下的值,若被删除则不会被遍历到

val 当前位置值
ind 当前位置索引
arr 正在操作的当前数组 (利用此参数可以间接改变原数组)

一般而言forEach()偏重于处理数组,但相对不关注返回值

map():

按索引值升序顺序,遍历每一项

方法的结果是每一个元素都调用提供的函数返回的结果,这是它不能跳出循环的原因

同样不直接改变原数组,但可以利用callback的第三个参数(arr,调用方法的数组本身,同forEach)去改变

  1. 返回值是一个新数组
  2. 同样不支持break,但如果return,则会返回给对应索引的新数组,也就是他的返回值
    如图:
    在这里插入图片描述
  3. 同样接收三个参数、增删改的特点与forEach()相同

map更侧重于返回值

总结:

两者对于替代传统的for循环十分有效,但不能中断循环是两者最大的问题,若想提前中断循环,可以用some和every,或者for of

老师会看到网上面试会问到,forEach和map的中断循环问题,此博客的总结应该是可以从容应对这个问题了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值