当前位置:首页 > JavaScript

js实现分类

2026-04-05 23:44:27JavaScript

使用数组的 filter 方法分类

通过 filter 方法可以根据条件筛选数组元素,将符合条件和不符条件的元素分别归类。
示例代码:

const items = [1, 2, 3, 4, 5];
const even = items.filter(item => item % 2 === 0); // 分类为偶数
const odd = items.filter(item => item % 2 !== 0); // 分类为奇数
console.log(even); // [2, 4]
console.log(odd); // [1, 3, 5]

使用 reduce 方法实现多分类

reduce 方法适合将数组元素按多个类别分组,结果通常以对象形式存储。
示例代码:

js实现分类

const data = [
  { type: 'fruit', name: 'apple' },
  { type: 'vegetable', name: 'carrot' },
  { type: 'fruit', name: 'banana' }
];
const categories = data.reduce((acc, item) => {
  if (!acc[item.type]) acc[item.type] = [];
  acc[item.type].push(item.name);
  return acc;
}, {});
console.log(categories); // { fruit: ['apple', 'banana'], vegetable: ['carrot'] }

基于 Map 的动态分类

Map 结构适合需要动态键名或复杂键值的分类场景。
示例代码:

js实现分类

const users = [
  { id: 1, role: 'admin' },
  { id: 2, role: 'user' },
  { id: 3, role: 'admin' }
];
const roleMap = new Map();
users.forEach(user => {
  if (!roleMap.has(user.role)) roleMap.set(user.role, []);
  roleMap.get(user.role).push(user.id);
});
console.log(Array.from(roleMap)); // [['admin', [1, 3]], ['user', [2]]]

使用 Set 去重后分类

若需先去除重复项再分类,可结合 Set 和数组方法。
示例代码:

const numbers = [1, 2, 2, 3, 4, 4];
const unique = [...new Set(numbers)];
const smallNumbers = unique.filter(n => n < 3);
const largeNumbers = unique.filter(n => n >= 3);
console.log(smallNumbers); // [1, 2]
console.log(largeNumbers); // [3, 4]

按条件分组的通用函数

封装一个可复用的分类函数,支持自定义条件逻辑。
示例代码:

function classify(array, classifierFn) {
  return array.reduce((result, item) => {
    const key = classifierFn(item);
    (result[key] || (result[key] = [])).push(item);
    return result;
  }, {});
}

const numbers = [1, 2, 3, 4, 5];
const result = classify(numbers, n => n % 2 === 0 ? 'even' : 'odd');
console.log(result); // { odd: [1, 3, 5], even: [2, 4] }

标签: js
分享给朋友:

相关文章

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Pro…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获取 jQ…

实现继承js

实现继承js

实现继承的方式 在JavaScript中,实现继承可以通过多种方式完成,每种方式都有其优缺点。以下是几种常见的实现继承的方法: 原型链继承 原型链继承是最基本的继承方式,通过将子类的原型指向父类的实…

js验证码实现

js验证码实现

验证码的基本原理 验证码(CAPTCHA)用于区分人类用户和自动化程序。常见类型包括图形验证码、滑动验证码、短信验证码等。JavaScript 可用于前端验证码的生成和验证逻辑。 图形验证码实现 使…

js sort 实现

js sort 实现

数组排序基础方法 JavaScript 数组的 sort() 方法默认按照字符串 Unicode 码点顺序排序。直接调用时会将元素转为字符串再比较: const arr = [10, 2, 5, 1…

js实现vue组件

js实现vue组件

使用原生JavaScript实现类似Vue的组件功能 基础组件结构 创建一个简单的组件系统需要实现数据绑定、模板渲染和事件处理。以下是一个基础实现框架: class Component { co…