wcollect
v1.1.2
Published
数组集合字典操作工具函数
Downloads
503
Maintainers
Readme
wcollect
一个轻量级的 TypeScript 集合操作工具库,提供了一系列用于处理数组、Map 等集合类型的实用方法。
安装
npm install wcollect功能特点
- 提供丰富的集合操作方法
- 完全使用 TypeScript 编写,提供完整的类型支持
- 无外部依赖
- 独立函数命名导出,支持 tree-shaking
导入方式
推荐按需导入函数,打包器(Vite / webpack 等)只会打入实际使用的代码:
import { filter, mapByKey, distinct } from 'wcollect';
filter([1, 2, 3], n => n > 1);
mapByKey(users, u => u.id);也可导入聚合对象 collect,兼容 collect.xxx 写法(会包含全部方法,无法 tree-shake):
import { collect } from 'wcollect';
collect.filter([1, 2, 3], n => n > 1);旧项目仍支持 default 导入:
import collect from 'wcollect';CommonJS 项目:
const { filter, mapByKey } = require('wcollect');
// 或
const { collect } = require('wcollect');使用方法
基础操作
import { filter, count, sum, max, min, avg } from 'wcollect';
const numbers = [1, 2, 3, 4, 5];
const evenNumbers = filter(numbers, n => n % 2 === 0); // [2, 4]
const gt3 = count(numbers, n => n > 3); // 2
const total = sum(numbers); // 15
const maximum = max(numbers); // 5
const minimum = min(numbers); // 1
const average = avg(numbers); // 3判断操作
import { any, all, equals } from 'wcollect';
const numbers = [1, 2, 3, 4, 5];
const hasEven = any(numbers, n => n % 2 === 0); // true
const allPositive = all(numbers, n => n > 0); // true
const arr1 = [1, 2, 3];
const arr2 = [3, 2, 1];
const isEqual = equals(arr1, arr2); // true转换操作
import { toArray, toMap, toObject, union } from 'wcollect';
const set = new Set([1, 2, 3]);
const array = toArray(set); // [1, 2, 3]
const obj = { a: 1, b: 2 };
const map = toMap(obj); // Map { 'a' => 1, 'b' => 2 }
const newObj = toObject(map); // { a: 1, b: 2 }
const nested = [[1, 2], [3, 4]];
const flat = union(nested, arr => arr); // [1, 2, 3, 4]分组和统计
import { mapByFor, mapCount, distinct } from 'wcollect';
const users = [
{ id: 1, name: 'Alice', age: 20 },
{ id: 2, name: 'Bob', age: 20 },
{ id: 3, name: 'Charlie', age: 30 }
];
const byAge = mapByFor(users, user => user.age);
const ageCount = mapCount(users, user => user.age);
const ages = [20, 20, 30, 40, 30];
const uniqueAges = distinct(ages); // [20, 30, 40]API 文档
基础操作
filter(array, func): 根据条件过滤数组count(array, func): 统计满足条件的元素数量sum(array, func?): 计算数组元素的总和max(array, func?): 获取数组中的最大值min(array, func?): 获取数组中的最小值avg(array, func?): 计算数组元素的平均值
判断操作
any(array, func): 判断是否存在满足条件的元素all(array, func): 判断是否所有元素都满足条件equals(array1, array2): 判断两个数组是否相等
转换操作
toArray(iterable): 将可迭代对象转换为数组toMap(object): 将对象转换为 MaptoObject(map): 将 Map 转换为对象union(array, func): 将数组中的每个元素映射为数组,然后合并所有结果
分组和统计
mapByKey(array, keyFunc, valueFunc?): 根据键函数将数组转换为 MapmapByFor(array, forFunc): 根据键函数将数组分组为 MapmapByNodes(array, nodesFunc): 根据节点函数将数组分组为 MapmapCount(array, keyFunc): 统计数组中每个键出现的次数groupByKey(array, keyFunc, valueFunc?): 根据键函数将数组转换为对象groupByFor(array, keyFunc): 根据键函数将数组分组为对象groupByNodes(array, nodesFunc): 根据节点函数将数组分组为对象groupCount(array, keyFunc): 统计数组中每个键出现的次数
其他操作
distinct(array, keyFunc?): 去除数组中的重复元素mapFilter(map, filter): 根据条件过滤 Map
贡献
欢迎提交 Issue 和 Pull Request。
许可证
MIT
