forEach、 map、 filter 的区别

forEach():

  • 遍历数组,调用数组的每个元素,利用回调函数对数组进行操作,本质上等同于 for 循环。
  • forEach 会改变原数组。没有返回值,
  • 不支持continue 和 break
  • return只能跳出当前循环
// forEach 
// item: 当前元素的值,调用函数必须要有的参数
// index: 当前元素的索引(下标),可选参数
// arrE: 当前元素所属的数组对象,可选参数
let arrE = [1,2,3,4,5]
arrE.forEach((item, index, arrE) => {
    
    
    console.log(index, item, arrE)
})

在这里插入图片描述

注意:
item 进行修改的时候,如果 item 是原始类型的值,item 对应的 的内存地址实际并没有变化,
如果 item 是 引用类型的值,item 对应多的内存地址也没有变化,但是对应的值,已经修改



map()

  • 遍历数组,调用数组的每个元素,利用回调函数对数组进行操作,与 forEach 类似。
  • 不过map是返回一个新数组,原数组不变,新数组的索引结构和原数组一致
  • map需要return返回值
//map
// item: 当前元素的值,调用函数必须要有的参数
// index: 当前元素的索引(下标),可选参数
// arrM: 当前元素所属的数组对象,可选参数
let arrM = [4, 9, 16, 25]
let arrMq = arrM.map((item, index, arrM) => {
    
    
    console.log(index, item, arrM)
    return Math.sqrt(item)
})
console.log('------------')
console.log(arrM)
console.log(arrMq)

在这里插入图片描述



filter()

  • 遍历数组,返回一个新数组(原数组的子集),回调函数用于逻辑判断
  • 回调函数为 true 则将当前元素添加到新数组中,false 则跳过
  • 不会改变原数组
//filter
// item: 当前元素的值,调用函数必须要有的参数
// index: 当前元素的索引(下标),可选参数
// arrF: 当前元素所属的数组对象,可选参数
let arrF = [1, 2, 3, 4, 5, 4, 2, 3, 6]

// 求偶数
let arrFc = arrF.filter((item, index, arrF) => {
    
    
    console.log(index, item, arrF)
    return item % 2 == 0
})
console.log('----------')
console.log('偶数集合:',arrFc)
console.log('原数组:', arrF)

//数组去重
let arrFs = arrF.filter((item, index) => {
    
    
    //当前元素 在原数组中的第一个索引 === 当前索引值,否则返回当前元素
    return arrF.indexOf(item, 0) === index;
})
console.log('----------')
console.log('数组去重: ', arrFs)
console.log('原数组:', arrF)

在这里插入图片描述



以上是自己的心得体会,如有错误,或者更改的地方,请提出

猜你喜欢

转载自blog.csdn.net/Robergean/article/details/119653744