当前位置:首页 > JavaScript

实现js filter

2026-04-07 00:29:55JavaScript

使用 Array.prototype.filter 方法

JavaScript 的 Array.prototype.filter 方法可以创建一个新数组,包含通过指定函数测试的所有元素。该方法不会改变原始数组。

const numbers = [1, 2, 3, 4, 5];
const evenNumbers = numbers.filter(number => number % 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, number => number % 2 === 0);
console.log(evenNumbers); // 输出: [2, 4]

使用 reduce 方法实现 filter

Array.prototype.reduce 方法也可以用来实现类似 filter 的功能。

实现js filter

function reduceFilter(array, callback) {
  return array.reduce((acc, current, index, array) => {
    if (callback(current, index, array)) {
      acc.push(current);
    }
    return acc;
  }, []);
}

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

使用 for...of 循环实现 filter

for...of 循环提供了一种简洁的方式来遍历数组并实现过滤功能。

function forOfFilter(array, callback) {
  const result = [];
  for (const [index, element] of array.entries()) {
    if (callback(element, index, array)) {
      result.push(element);
    }
  }
  return result;
}

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

使用箭头函数简化代码

箭头函数可以让 filter 方法的回调函数更加简洁。

实现js filter

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

过滤对象数组

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 方法可以与其他数组方法(如 mapreduce)结合使用,实现更复杂的数据处理。

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

标签: jsfilter
分享给朋友:

相关文章

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…