es 数组的方法
数组的方法
flatmap
some
every
好,那我直接给你一份高频对比表,先把核心差异记住。
方法对比(是否短路 / 返回值 / 是否改原数组)
- some
- 含义:是否至少一个满足条件
- 短路:是(找到一个就停)
- 返回:布尔值
- 改原数组:否
- every
- 含义:是否全部满足条件
- 短路:是(遇到一个不满足就停)
- 返回:布尔值
- 改原数组:否
- find
- 含义:找第一个满足条件的元素
- 短路:是
- 返回:元素或 undefined
- 改原数组:否
- findIndex
- 含义:找第一个满足条件元素的下标
- 短路:是
- 返回:下标或 -1
- 改原数组:否
- filter
- 含义:筛选出所有满足条件元素
- 短路:否
- 返回:新数组
- 改原数组:否
- map
- 含义:一对一映射成新数组
- 短路:否
- 返回:新数组
- 改原数组:否
- reduce
- 含义:归并成一个值(和、对象、分组等)
- 短路:否(通常遍历完)
- 返回:任意类型(由初始值和逻辑决定)
- 改原数组:否
- forEach
- 含义:遍历执行副作用
- 短路:否(不能用 break)
- 返回:undefined
- 改原数组:看你在回调里是否手动改
- includes
- 含义:是否包含某个值
- 短路:是(找到就停)
- 返回:布尔值
- 改原数组:否
一组最小示例(同一数据)
-
数组:[1, 3, 5, 8]
-
some(x > 6) -> true
-
every(x > 0) -> true
-
find(x % 2 === 0) -> 8
-
findIndex(x % 2 === 0) -> 3
-
filter(x % 2 === 1) -> [1, 3, 5]
-
map(x * 2) -> [2, 6, 10, 16]
-
reduce((s, x) => s + x, 0) -> 17
-
includes(3) -> true
记忆口诀
- 判真假:some / every / includes
- 找一个:find / findIndex
- 产新数组:map / filter
- 汇总一个值:reduce
- 只遍历做事:forEach
如果你愿意,我下一条可以给你“面试版陷阱题”,比如 some 和 every 在空数组上的结果为什么不同。
漫思
浙公网安备 33010602011771号