当前位置:首页 > JavaScript

js实现过滤

2026-04-06 23:02:26JavaScript

使用 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]

自定义过滤函数

如果需要更复杂的逻辑,可以手动遍历数组并筛选符合条件的元素。

function customFilter(array, condition) {
  const result = [];
  for (const item of array) {
    if (condition(item)) {
      result.push(item);
    }
  }
  return result;
}

const users = [
  { name: 'Alice', age: 25 },
  { name: 'Bob', age: 30 },
  { name: 'Charlie', age: 20 }
];
const adults = customFilter(users, user => user.age >= 25);
console.log(adults); // 输出 [{ name: 'Alice', age: 25 }, { name: 'Bob', age: 30 }]

使用 Array.prototype.reduce() 过滤

reduce() 也可以实现过滤功能,通过累积符合条件的元素。

const numbers = [10, 20, 30, 40];
const filteredNumbers = numbers.reduce((acc, num) => {
  if (num > 25) acc.push(num);
  return acc;
}, []);
console.log(filteredNumbers); // 输出 [30, 40]

过滤对象属性

如果需要从对象中过滤特定属性,可以使用 Object.keys() 结合 filter()

const person = { name: 'John', age: 30, city: 'New York' };
const filteredKeys = Object.keys(person).filter(key => key !== 'age');
const filteredPerson = {};
filteredKeys.forEach(key => {
  filteredPerson[key] = person[key];
});
console.log(filteredPerson); // 输出 { name: 'John', city: 'New York' }

使用 Lodash 库过滤

Lodash 提供了 _.filter() 方法,适用于更复杂的数据结构。

const _ = require('lodash');
const users = [
  { name: 'Alice', active: true },
  { name: 'Bob', active: false },
  { name: 'Charlie', active: true }
];
const activeUsers = _.filter(users, { active: true });
console.log(activeUsers); // 输出 [{ name: 'Alice', active: true }, { name: 'Charlie', active: true }]

过滤嵌套数组

如果数据是嵌套结构,可以使用递归或 flatMap() 结合 filter()

js实现过滤

const nestedArray = [[1, 2], [3, 4, 5], [6]];
const flattenedAndFiltered = nestedArray.flatMap(arr => arr.filter(num => num % 2 === 0));
console.log(flattenedAndFiltered); // 输出 [2, 4, 6]

标签: js
分享给朋友:

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似: func…

js验证码的实现

js验证码的实现

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