当前位置:首页 > JavaScript

js实现filter

2026-04-06 12:23:46JavaScript

实现 JavaScript 的 filter 方法

在 JavaScript 中,filter 是数组的一个内置方法,用于创建一个新数组,包含通过测试函数的所有元素。以下是几种实现 filter 的方法。

使用原生 Array.prototype.filter

原生 filter 方法的基本用法如下:

const numbers = [1, 2, 3, 4, 5];
const evenNumbers = numbers.filter(num => num % 2 === 0);
console.log(evenNumbers); // 输出: [2, 4]

手动实现 filter 方法

可以通过扩展 Array.prototype 或编写独立的函数来实现 filter 的功能。

方法 1:独立函数实现

function customFilter(array, callback) {
    const result = [];
    for (let i = 0; i < array.length; i++) {
        if (callback(array[i], i, array)) {
            result.push(array[i]);
        }
    }
    return result;
}

const numbers = [1, 2, 3, 4, 5];
const evenNumbers = customFilter(numbers, num => num % 2 === 0);
console.log(evenNumbers); // 输出: [2, 4]

方法 2:扩展 Array.prototype

js实现filter

Array.prototype.customFilter = function(callback) {
    const result = [];
    for (let i = 0; i < this.length; i++) {
        if (callback(this[i], i, this)) {
            result.push(this[i]);
        }
    }
    return result;
};

const numbers = [1, 2, 3, 4, 5];
const evenNumbers = numbers.customFilter(num => num % 2 === 0);
console.log(evenNumbers); // 输出: [2, 4]

实现细节说明

  • 回调函数参数callback 接收三个参数:当前元素、当前索引和原数组。
  • 返回值:返回一个新数组,包含所有通过测试的元素。
  • 不修改原数组filter 不会修改原数组,而是返回一个新数组。

示例:过滤对象数组

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 功能,满足不同的需求。

标签: jsfilter
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…

js实现原理

js实现原理

JavaScript 实现原理 JavaScript 是一种解释型语言,其实现原理涉及多个核心组件和运行机制,包括引擎、运行时环境、事件循环等。 引擎与解释执行 现代 JavaScript 引擎(如…

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…