当前位置:首页 > 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 的功能。

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 方法的回调函数更加简洁。

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)结合使用,实现更复杂的数据处理。

实现js filter

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实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callback) {…

vue filter 实现

vue filter 实现

Vue 过滤器实现方法 Vue 过滤器(Filters)用于文本格式化,可以在模板中直接使用。以下是实现 Vue 过滤器的几种方式。 全局过滤器 全局过滤器通过 Vue.filter() 方法注册,…

js实现自举

js实现自举

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

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…

js实现文件夹

js实现文件夹

使用JavaScript创建文件夹 在浏览器端的JavaScript中无法直接操作文件系统创建文件夹,这是出于安全考虑。但在Node.js环境中可以通过文件系统模块(fs)实现。 Node.js中使…