ES6 数组新方法 forEach,map,filter,some,every

一、forEach

遍历数组,对数组的每个元素执行特定的函数。

forEach()方法对数组的每个元素执行一次给定的函数

const arr=[1,2,3,1,2,9,8]
arr.forEach((item,index,arr)=>{
  console.log(item,index,arr)
})

执行结果: 

实现原理:

const arr=[1,2,3,1,2,9,8]
arr.forEach((item,index,arr)=>{
  console.log(item,index,arr)
  return   
  // 无法通过break语句中断循环,可用return语句当前回调函数中返回,即和break一样跳出本次迭代
})

for 可以通过break continue退出循环,forEach不行.

原因:foreach每一次循环都是一个单独的函数执行,因此每一个函数的return不会影响其他函数的执行,所以无法跳出循环;可以通过try-catch退出循环

二、Map

map() 方法创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。

const newArr=arr.map(item=>item*2)
console.log(newArr)
console.log(arr)

执行结果

forEach和map的区别

区别一:

  • map 会返回一个新数组,forEach不会;实际上是因为forEach不会返回任何值(实际上返回的是undefined),而map 是有返回值的,是一个新数组

forEach 和 map 的实现原理相似。它们都是通过遍历数组,对数组的每个元素执行特定的函数。区别主要在于它们处理函数返回值的方式不同forEach 忽略函数的返回值,而 map 则将函数的返回值收集到一个新的数组中 

map和forEach会不会改变原数组?

基础数据类型:两者都不会改变

引用数据类型(数组、对象):两者都会改变

原因:

这是因为在使用 forEach 和 map 方法时,对引用类型元素的修改会直接反映在原始数组中。这是因为引用类型的元素实际上存储的是引用(内存地址),而非值本身。因此,通过引用可以访问修改原始数组中的元素。

区别二:

  • foreach可以跳过本次循环的return后面的代码逻辑,return 语句可以当前回调函数中返回,而map不能,只能遍历完整个数组。

 

 区别三:

  • forEach不支持链式调用,而map支持链式调用,可以继续对返回的新数组进行操作。

参考文章: 面试:问js的forEach和map的区别 - 掘金

 三、filter

const newARR=arr.filter(item=>item>=3)
console.log(newARR)

执行结果:

filter的回调函数是boolean,如果返回的为true,才会将过滤的值汇集到新数组中;

四、some和every

它们返回一个布尔值

some

数组中只要有一个满足条件即可返回true

every

数组中需要所有元素满足条件才返回true

const arr=[1,2,2,3,4,5,9]
const flag1=arr.some(item=>item>=3)

const flag2=arr.every(item=>item>=3)
console.log('1',flag1)
console.log('2',flag2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值