当前位置:首页 > JavaScript

js filter实现

2026-02-01 16:56:22JavaScript

使用 Array.prototype.filter() 方法

filter() 是 JavaScript 数组的一个内置方法,用于创建一个新数组,包含通过指定函数测试的所有元素。该方法不会改变原数组。

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

自定义 filter 函数实现

可以通过自定义函数模拟 filter 的行为,理解其底层逻辑。

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]

在对象上实现 filter 方法

可以为非数组对象(如类数组对象或自定义对象)实现类似 filter 的功能。

const obj = { a: 1, b: 2, c: 3, d: 4 };

function filterObject(object, callback) {
  const result = {};
  Object.keys(object).forEach(key => {
    if (callback(object[key], key, object)) {
      result[key] = object[key];
    }
  });
  return result;
}

const evenValues = filterObject(obj, value => value % 2 === 0);
console.log(evenValues); // { b: 2, d: 4 }

链式调用 filter 与其他数组方法

filter 可以与其他数组方法(如 mapreduce)结合使用,实现复杂的数据处理。

const numbers = [1, 2, 3, 4, 5];
const doubledEvenNumbers = numbers
  .filter(num => num % 2 === 0)
  .map(num => num * 2);
console.log(doubledEvenNumbers); // [4, 8]

使用 thisArg 参数

filter 方法的第二个参数可以指定回调函数中的 this 值。

const threshold = { min: 2, max: 4 };

function isInRange(value) {
  return value >= this.min && value <= this.max;
}

const numbers = [1, 2, 3, 4, 5];
const filteredNumbers = numbers.filter(isInRange, threshold);
console.log(filteredNumbers); // [2, 3, 4]

处理稀疏数组

filter 方法会跳过稀疏数组中未定义或删除的元素。

js filter实现

const sparseArray = [1, , 3, , 5];
const filteredArray = sparseArray.filter(num => true);
console.log(filteredArray); // [1, 3, 5]

标签: jsfilter
分享给朋友:

相关文章

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现 功能

js实现 功能

在 JavaScript 中实现功能通常涉及多个关键步骤,具体取决于功能需求。以下是常见功能的实现方法和示例: 基本功能实现 使用函数封装逻辑是最直接的方式。例如,实现一个计算两数之和的函数: f…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…

js实现导航菜单

js实现导航菜单

使用HTML和CSS创建基础结构 导航菜单的基础结构通常由HTML的无序列表(<ul>)和列表项(<li>)组成,每个列表项包含一个链接(<a>)。CSS用于样式化…

js实现乘法

js实现乘法

实现乘法运算的方法 在JavaScript中实现乘法运算可以通过多种方式完成,以下列举几种常见方法: 基础运算符 直接使用乘法运算符*是最简单的方式: let result = 3 * 5; //…

js sort 实现

js sort 实现

数组排序基础方法 JavaScript 数组的 sort() 方法默认按照字符串 Unicode 码点顺序排序。直接调用时会将元素转为字符串再比较: const arr = [10, 2, 5, 1…