当前位置:首页 > JavaScript

js筛选功能实现

2026-04-04 06:30:09JavaScript

JavaScript 筛选功能实现

基本数组筛选

使用 Array.prototype.filter() 方法对数组进行筛选:

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

对象数组筛选

对包含对象的数组进行筛选:

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}]

多条件筛选

结合多个条件进行复杂筛选:

const products = [
  { name: 'Laptop', price: 1000, inStock: true },
  { name: 'Phone', price: 500, inStock: false },
  { name: 'Tablet', price: 300, inStock: true }
];

const affordableInStock = products.filter(product => 
  product.price < 800 && product.inStock
);
console.log(affordableInStock); // 输出: [{name: 'Tablet', price: 300, inStock: true}]

动态筛选

根据用户输入动态筛选数据:

const searchInput = document.getElementById('search');
const data = ['apple', 'banana', 'cherry', 'date'];

searchInput.addEventListener('input', (e) => {
  const searchTerm = e.target.value.toLowerCase();
  const filteredData = data.filter(item => 
    item.toLowerCase().includes(searchTerm)
  );
  console.log(filteredData);
});

正则表达式筛选

使用正则表达式进行更灵活的匹配:

const words = ['hello', 'world', 'javascript', 'filter'];
const pattern = /^[a-j]/i;

const matchedWords = words.filter(word => pattern.test(word));
console.log(matchedWords); // 输出: ['hello', 'javascript', 'filter']

性能优化

对于大型数据集,考虑使用更高效的筛选方法:

// 使用for循环替代filter()以获得更好性能
function fastFilter(array, condition) {
  const result = [];
  for (let i = 0; i < array.length; i++) {
    if (condition(array[i], i, array)) {
      result.push(array[i]);
    }
  }
  return result;
}

链式筛选

可以链式调用多个筛选方法:

js筛选功能实现

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const result = numbers
  .filter(n => n > 3)
  .filter(n => n % 2 === 0)
  .map(n => n * 2);

console.log(result); // 输出: [8, 12, 16, 20]

注意事项

  1. filter() 方法不会改变原始数组,而是返回新数组
  2. 确保筛选条件函数是纯函数,避免副作用
  3. 对于复杂条件,可以将筛选逻辑提取为单独函数提高可读性
  4. 在React等框架中,筛选常用于状态管理

以上方法涵盖了JavaScript中实现筛选功能的常见场景和技术。

标签: 功能js
分享给朋友:

相关文章

vue实现用户添加功能

vue实现用户添加功能

实现用户添加功能的步骤 表单设计与数据绑定 在Vue组件中设计一个表单,包含用户名、邮箱、密码等字段。使用v-model指令实现双向数据绑定,将表单输入与组件的数据属性关联起来。 <templ…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

js实现倒计时

js实现倒计时

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

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js 实现倒计时

js 实现倒计时

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

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…