filter是数组方法,创建新数组保留满足条件的元素;回调函数接收当前元素、索引、原数组,须返回布尔值;常用于筛选数字、对象及去重,不修改原数组。

filter 是数组的内置方法,用于创建一个新数组,其中只包含满足指定条件的原数组元素。它不会修改原数组,而是返回一个过滤后的新数组。
基本用法:传入一个判断函数
filter 接收一个回调函数作为参数,该函数对每个元素执行,返回 true 的元素会被保留在新数组中,返回 false 的则被过滤掉。
- 回调函数接收三个参数:当前元素(必填)、索引、原数组(后两者可选)
- 必须有返回值,且应为布尔值(或能转为布尔值的值)
- 空数组调用 filter 会直接返回空数组
常见使用场景
筛选数字:比如找出所有大于 10 的数
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
const numbers = [5, 12, 8, 15, 3]; const bigNumbers = numbers.filter(n => n > 10); // [12, 15]
筛选对象:比如找状态为 "active" 的用户
立即学习“Java免费学习笔记(深入)”;
const users = [
{ name: 'Alice', status: 'active' },
{ name: 'Bob', status: 'inactive' },
{ name: 'Charlie', status: 'active' }
];
const activeUsers = users.filter(u => u.status === 'active');
去重(配合 indexOf):保留第一次出现的元素
const arr = [1, 2, 2, 3, 4, 4]; const unique = arr.filter((item, index) => arr.indexOf(item) === index); // [1, 2, 3, 4]
注意事项
- filter 不会跳过稀疏数组的空位,但会遍历它们(此时当前元素是 undefined)
- 如果回调函数没有 return 语句,或返回 undefined / null / 0 / NaN / '',这些都会被转为 false,对应元素被过滤
- 想同时获取索引和值,记得在箭头函数里用括号包裹参数:
(item, index) => {...}

















