实现js filter

实现 JavaScript 的 filter 方法
filter 是 JavaScript 数组的高阶函数,用于创建一个新数组,包含通过测试函数的所有元素。以下是实现方式:

自定义 filter 方法
可以通过扩展 Array.prototype 或直接编写函数实现:
Array.prototype.myFilter = function(callback) {
const filteredArray = [];
for (let i = 0; i < this.length; i++) {
if (callback(this[i], i, this)) {
filteredArray.push(this[i]);
}
}
return filteredArray;
};
使用示例
const numbers = [1, 2, 3, 4, 5];
const evenNumbers = numbers.myFilter(num => num % 2 === 0);
console.log(evenNumbers); // 输出 [2, 4]
原生 filter 方法的使用
const words = ['spray', 'limit', 'elite', 'exuberant'];
const longWords = words.filter(word => word.length > 5);
console.log(longWords); // 输出 ["exuberant"]
注意事项
- 回调函数应返回布尔值,决定元素是否包含在新数组中
- 不会修改原数组,而是返回新数组
- 空元素不会调用回调函数
实现原理
- 创建一个空数组存储结果
- 遍历原数组每个元素
- 对每个元素执行回调函数
- 如果回调返回
true,将元素添加到结果数组 - 返回结果数组
性能考虑
- 时间复杂度为 O(n),需要遍历整个数组
- 对于大型数组,考虑性能影响
- 可以结合其他方法如
map或reduce进行复杂操作






