当前位置:首页 > JavaScript

js实现筛选数组

2026-03-01 13:28:45JavaScript

筛选数组的常用方法

在JavaScript中,数组筛选可以通过多种方式实现,以下是几种常见的方法:

filter方法 使用数组的filter方法可以创建一个新数组,包含通过测试的所有元素:

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

for循环 通过传统的for循环遍历数组并筛选元素:

js实现筛选数组

const numbers = [1, 2, 3, 4, 5];
const evenNumbers = [];
for (let i = 0; i < numbers.length; i++) {
  if (numbers[i] % 2 === 0) {
    evenNumbers.push(numbers[i]);
  }
}
console.log(evenNumbers); // [2, 4]

reduce方法 使用reduce方法可以将数组缩减为满足条件的元素集合:

const numbers = [1, 2, 3, 4, 5];
const evenNumbers = numbers.reduce((acc, num) => {
  if (num % 2 === 0) {
    acc.push(num);
  }
  return acc;
}, []);
console.log(evenNumbers); // [2, 4]

复杂条件的筛选

当需要基于多个条件筛选时,可以在回调函数中组合条件:

js实现筛选数组

const users = [
  { name: 'Alice', age: 25, active: true },
  { name: 'Bob', age: 30, active: false },
  { name: 'Charlie', age: 22, active: true }
];
const activeYoungUsers = users.filter(user => user.active && user.age < 30);
console.log(activeYoungUsers); 
// [{ name: 'Alice', age: 25, active: true }, { name: 'Charlie', age: 22, active: true }]

筛选并修改元素

使用mapfilter组合可以在筛选的同时转换元素:

const products = [
  { id: 1, name: 'Laptop', price: 999 },
  { id: 2, name: 'Phone', price: 699 },
  { id: 3, name: 'Tablet', price: 499 }
];
const expensiveProductNames = products
  .filter(product => product.price > 500)
  .map(product => product.name);
console.log(expensiveProductNames); // ['Laptop', 'Phone']

性能考虑

对于大型数组,filter方法通常比手动循环更高效,因为它是原生实现的。但在某些特殊情况下,提前终止循环可能更优:

const bigArray = Array(1000000).fill().map((_, i) => i);
const result = [];
for (let i = 0; i < bigArray.length; i++) {
  if (bigArray[i] > 500) break; // 提前终止
  if (bigArray[i] % 2 === 0) {
    result.push(bigArray[i]);
  }
}

标签: 数组js
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

java如何输入数组

java如何输入数组

输入数组的方法 在Java中,可以通过多种方式输入数组,具体取决于输入源(如控制台、文件等)和数组类型(如基本类型或对象类型)。以下是几种常见的方法: 使用Scanner从控制台输入 对于基本数据类…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…