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)
以上是自己的心得体会,如有错误,或者更改的地方,请提出