当前位置:首页 > 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 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现vue路由

js实现vue路由

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

js实现滑动

js实现滑动

实现滑动效果的方法 在JavaScript中实现滑动效果可以通过多种方式完成,以下是几种常见的实现方法: 使用CSS过渡和JavaScript触发 通过CSS定义过渡效果,JavaScript控制触…

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…

js实现图片滚动

js实现图片滚动

图片滚动的实现方法 使用CSS动画实现 通过CSS的animation和@keyframes可以实现简单的图片滚动效果。这种方法适合静态图片的无缝循环滚动。 <style> .scr…