当前位置:首页 > JavaScript

js实现filter

2026-02-01 19:23:58JavaScript

实现 JavaScript 的 filter 方法

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

原生 Array.prototype.filter 的使用

原生 filter 方法接受一个回调函数,该函数会对数组的每个元素执行测试。回调函数返回 true 的元素会被包含在新数组中。

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

手动实现 filter 方法

可以通过扩展 Array.prototype 或直接编写函数来手动实现 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]

使用 reduce 实现 filter

reduce 方法也可以用来实现 filter 的功能,通过累积满足条件的元素。

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

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

注意事项

  • 回调函数的参数依次为当前元素、索引和原数组。
  • filter 不会改变原数组,而是返回一个新数组。
  • 如果没有任何元素通过测试,则返回空数组。

js实现filter

标签: jsfilter
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

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

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的H…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="sli…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Ja…