| 方法名 | 是否改变原数组 | 返回值类型 | 核心用途 | 典型场景 | 关键特点 |
|---|---|---|---|---|---|
filter | ❌ 否 | 新数组(满足条件的元素) | 批量筛选元素 | 筛选列表中符合条件的数据(如价格 > 100 的商品) | 遍历全部元素,返回所有匹配项 |
map | ❌ 否 | 新数组(转换后的元素) | 统一转换数组元素格式 | 接口数据格式化(如提取数组对象的某字段) | 遍历全部元素,一一映射转换 |
find | ❌ 否 | 单个元素 /undefined | 查找第一个匹配的元素 | 根据 ID 查找列表中的单个对象 | 找到后立即终止遍历,效率高于filter |
reduce | ❌ 否 | 任意类型(累加 / 合并值) | 数据聚合计算 | 求和、统计元素出现次数、对象合并 | 灵活度最高,可替代sum/count等场景 |
forEach | ❌ 否 | undefined | 单纯遍历执行操作 | 批量打印、DOM 渲染(如遍历数组生成列表) | 无返回值,仅执行副作用 |
sort | ✅ 是 | 排序后的原数组 | 数组排序 | 数字升 / 降序、按对象属性排序(如按年龄排序) | 默认按字符串排序,需传比较函数 |
slice | ❌ 否 | 新数组(指定区间元素) | 截取子数组 / 数组分页 | 分页加载(如取第 1 页数据:slice (0,10)) | 支持负索引(如 slice (-2) 取最后 2 个元素) |
some | ❌ 否 | 布尔值(true/false) | 判断数组是否至少有一个元素满足条件 | 检查列表是否有已选中的项、是否包含负数 | 找到第一个匹配项后立即终止遍历 |
every | ❌ 否 | 布尔值(true/false) | 判断数组所有元素是否都满足条件 | 校验表单数组所有项是否必填、所有数字是否为正 | 只要有一个不满足就终止遍历,返回 false |
includes | ❌ 否 | 布尔值(true/false) | 判断数组是否包含指定值(严格相等 ===) | 检查数组是否有某个值、权限列表是否包含某权限 | 支持指定起始查找索引(第二个参数) |
小总结:如果是查找,查找是否有元素用includes,查找是否有符合条件的,用some,查找是否都符合条件,用every;如果是想查找是否有符合条件的,还想返回查找的元素,用find(find只会查找第一个匹配的元素,如果想将符合条件的元素都返回,用filter)