可选参数 [, thisArg] 循环中 this 指向
如果使用箭头函数表达式来传入函数参数, thisArg 参数会被忽略,因为箭头函数在词法上绑定了 this 值。
数组相关遍历方法 回调函数 参数为 item
index
array
.forEach()
当元素为引用类型时,callback可能会改变原数组下该元素的属性
- 除了抛出异常以外,没有办法中止或跳出循环。
- 那些已删除(使用
delete
方法等情况)或者未初始化的项(empty
)将被跳过(但不包括那些值为 undefined 的项)
返回 undefined,因而不可链式调用
.map()
对数组进行一定回调函数的映射 生产一个新的数组
- return 相当于对当前位置元素值的修改(但并不会改变原数组)
根据每轮的返回 创建一个新的数组返回- 那些已删除(使用
delete
方法等情况)或者未初始化的项(empty
)将被跳过
.reduce() (从左向右)
.reduceRight() (从右向左)
参数 | 说明 |
---|---|
回调函数 | * Accumulator (acc) (累计器) 初始值,之后为上一次回调函数的返回 |
(acc,cur, idx, src) => {} | * Current Value (cur) (数组元素值) |
* Current Index (idx) (元素下标) | |
* Source Array (src) (原数组) | |
参数二 | 为 acc 提供初始值 如果没有提供初始值,则acc将使用数组中的第一个元素的值。 reduce 会从索引1的地方开始执行 callback 方法,跳过第一个索引。 ps:在没有初始值的空数组上调用 reduce 将报错。 |
和 map 类似, 不过返回的是回调函数最后一次return的值
可用于求数组元素总和这类 累计性 的操作
.filter() 方法
从原数组中按一定回调规则筛选出 一个新的数组
- 根据回调返回true的元素 创建一个新的数组返回(但并不会改变原数组)
- 那些已删除(使用
delete
方法等情况)或者未初始化的项(empty
)将被跳过
可用来筛选删除数组元素,将返回值赋给原数组
.every() 方法
对所有元素进行回调的判定,整体结果是个与门(全部通过为true)
当出现返回 false 时,跳出整个循环(意味着后续不会执行)
- 那些已删除(使用
delete
方法等情况)或者未初始化的项(empty
)将被跳过
.some() 方法
与every类似,整体结果或门
当出现返回 true 时,跳出整个循环
- 那些已删除(使用
delete
方法等情况)或者未初始化的项(empty
)将被跳过
一般 for 循环
for of / for in
https://juejin.cn/post/6844903538175262734#comment
速度对比
for > for-of > forEach > filter > map > for-in