js 遍历 Array 数组的方法
可选参数 [, 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
内容会不断更新,欢迎批评指正。
分类:
# JS 数组
标签:
javascript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!