js filter实现
使用 JavaScript 的 filter 方法
JavaScript 的 filter 方法是数组原型上的一个方法,用于创建一个新数组,其中包含通过指定函数测试的所有元素。filter 不会改变原数组,而是返回一个新数组。
语法如下:

const newArray = array.filter(callback(element[, index[, array]])[, thisArg])
callback:测试数组每个元素的函数,返回true表示保留该元素,false则不保留。element:当前处理的元素。index(可选):当前元素的索引。array(可选):调用filter的数组本身。thisArg(可选):执行callback时使用的this值。
基本用法示例
过滤数组中的偶数:
const numbers = [1, 2, 3, 4, 5, 6];
const evenNumbers = numbers.filter(num => num % 2 === 0);
console.log(evenNumbers); // [2, 4, 6]
过滤对象数组中符合条件的对象:

const users = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 30 },
{ name: 'Charlie', age: 20 }
];
const adults = users.filter(user => user.age >= 25);
console.log(adults); // [{ name: 'Alice', age: 25 }, { name: 'Bob', age: 30 }]
结合索引使用
filter 的回调函数可以接收索引参数,用于基于索引的过滤:
const fruits = ['apple', 'banana', 'orange', 'grape'];
const filteredFruits = fruits.filter((fruit, index) => index % 2 === 0);
console.log(filteredFruits); // ['apple', 'orange']
链式调用
filter 可以与其他数组方法(如 map、reduce)链式调用:
const numbers = [1, 2, 3, 4, 5];
const doubledEvens = numbers
.filter(num => num % 2 === 0)
.map(num => num * 2);
console.log(doubledEvens); // [4, 8]
注意事项
filter不会修改原数组,而是返回一个新数组。- 如果没有任何元素通过测试,
filter返回一个空数组。 filter会跳过稀疏数组中不存在的元素(如[1, , 3]中的空位)。






