Appearance
数组工具
从 @axewo/fin-core/utils 或根入口导入。对象的选取工具 pick、omit 也在此模块导出。
API
| 函数 | 用途 |
|---|---|
groupBy(list, key) / groupByFn(list, fn) | 按字段或回调结果分组 |
uniqueBy(list, key) / uniqueByFn(list, fn) | 按字段或回调结果去重,保留首项 |
pick(object, keys) / omit(object, keys) | 选取或排除指定字段 |
difference(a, b) / intersection(a, b) / union(...lists) | 差集、交集、并集,按值或对象引用比较 |
compact(list) | 过滤所有 falsy 值,包括 0、false、空字符串、null、undefined、NaN |
chunk(list, size) | 按正整数 size 分块,非法 size 抛出 RangeError |
flatten(list) / flatDeep(list) | 展开一层或递归展开 |
partition(list, predicate) | 分成匹配与不匹配两组 |
maxBy(list, fn) / minBy(list, fn) | 按数值回调寻找最大、最小项,空数组返回 undefined |
sum(numbers) / sumBy(list, fn) | 数字求和;金额精度计算使用金额工具 |
sortBy(list, keyOrFn) / sortByDesc(list, keyOrFn) | 返回排序后的新数组 |
isEmpty(list) | 判断 null、undefined 或空数组 |
ts
import { groupBy, uniqueBy, sortBy, sumBy } from '@axewo/fin-core/utils'
const orders = [
{ id: 'a', status: 'draft', amount: 20 },
{ id: 'b', status: 'draft', amount: 10 },
]
const grouped = groupBy(orders, 'status')
const unique = uniqueBy(orders, 'id')
const sorted = sortBy(orders, 'amount')
const total = sumBy(orders, order => order.amount)树转换使用 listToTree / treeToList,当前没有 arrayToTree、treeToArray 或通用 unique 导出。