- Go backend (server/)
- Frontend (web/, server/static/)
- Database and deployment files
- Scripts and docs
Co-Authored-By: 狸花猫/Claude-Qwen3.6-Plus 🐾
258 lines
4.0 KiB
Markdown
258 lines
4.0 KiB
Markdown
# util
|
||
|
||
> 为 `antv` 开发的轻量级工具方法库。
|
||
|
||
|
||
## 安装下载
|
||
|
||
> tnpm i --save @antv/util
|
||
|
||
```js
|
||
// 所有的 api 是都这么引入,名字不同而已
|
||
import { each, get } from '@antv/util';
|
||
|
||
each(arr, (item, idx) => {
|
||
|
||
});
|
||
|
||
const x = get(obj, 'a.b', '');
|
||
```
|
||
|
||
## API 文档
|
||
|
||
> 目前使用到的、且推荐使用的 API 文档,不在文档内的不建议使用。
|
||
|
||
后续方法添加到文档需要经过审核:
|
||
|
||
1. ts 类型定义是否完善
|
||
2. 单测是否覆盖
|
||
3. 文档实例是否覆盖全部能力
|
||
|
||
|
||
> 推荐使用的 API 文档如下:
|
||
- array
|
||
- [contains](#contains)
|
||
- [difference](#)
|
||
- [map](#)
|
||
- [find](#)
|
||
- [findIndex](#)
|
||
- firstValue
|
||
- [filter](#)
|
||
- [flatten](#)
|
||
- flattenDeep
|
||
- getRange
|
||
- pull
|
||
- pullAt
|
||
- sortBy
|
||
- valuesOfKey
|
||
- head
|
||
- last
|
||
- [reduce](#)
|
||
- [remove](#)
|
||
- [sortBy](#)
|
||
- [union](#)
|
||
- [uniq](#)
|
||
- [toArray](#)
|
||
- [groupBy](#)
|
||
- [group](#)
|
||
- [startsWith](#)
|
||
- [endsWith](#)
|
||
- [every](#)
|
||
- [some](#)
|
||
- indexOf
|
||
|
||
- event
|
||
- [getWrapBehavior](#)
|
||
- [wrapBehavior](#)
|
||
|
||
- object
|
||
- [clone](#)
|
||
- has
|
||
- hasKey
|
||
- keys
|
||
- isMatch
|
||
- [forIn](#)
|
||
- values
|
||
- [mapValues](#)
|
||
- [mapKeys](#)
|
||
- [get](#)
|
||
- [set](#)
|
||
- [groupBy](#)
|
||
- [isEqual](#)
|
||
- isEqualWith
|
||
- [pick](#)
|
||
- string
|
||
- [lowerCase](#)
|
||
- [upperCase](#)
|
||
- substitute
|
||
- upperFirst
|
||
- lowerFirst
|
||
- [toString](#)
|
||
- [uniqueId](#)
|
||
- type
|
||
- [getType](#)
|
||
- isArguments
|
||
- [isArray](#)
|
||
- isArrayLike
|
||
- [isBoolean](#)
|
||
- [isDate](#)
|
||
- isError
|
||
- [isFunction](#)
|
||
- [isFinite](#)
|
||
- [isNil](#)
|
||
- [isNull](#)
|
||
- [isNumber](#)
|
||
- [isObject](#)
|
||
- isObjectLike
|
||
- isPlainObject
|
||
- isPrototype
|
||
- isType
|
||
- isElement
|
||
- [isRegExp](#)
|
||
- [isString](#)
|
||
- [isUndefined](#)
|
||
- [isEmpty](#)
|
||
- function
|
||
- [debounce](#)
|
||
- [throttle](#)
|
||
- [noop](#)
|
||
- [identity](#)
|
||
- [memoize](#)
|
||
- noop
|
||
- size
|
||
- format
|
||
- number2color
|
||
- parseRadius: 将数值转换成矩形四个角对应的 radius
|
||
- toArray
|
||
- toString
|
||
- math
|
||
- clamp
|
||
- fixedBase
|
||
- isDecimal
|
||
- isEven
|
||
- isInteger
|
||
- isNegative
|
||
- isNumberEqual
|
||
- isOdd
|
||
- isPositive
|
||
- maxBy
|
||
- minBy
|
||
- toDegree
|
||
- toInteger
|
||
- toRadian
|
||
- animate
|
||
- requestAnimationFrame
|
||
- clearAnimationFrame
|
||
- other
|
||
- augment
|
||
- debounce
|
||
- mix
|
||
- deepMix
|
||
- each
|
||
- extend
|
||
## 实例
|
||
|
||
> TODO 完善上述各个方法的使用实例。
|
||
|
||
|
||
- contains
|
||
|
||
```js
|
||
import { contains } from '@antv/util';
|
||
|
||
const has = contains([1, 2, 3], 1);
|
||
```
|
||
|
||
- startsWith
|
||
|
||
```js
|
||
import { startsWith } from '@antv/util';
|
||
|
||
startsWith([1, 2, 3], 1);
|
||
// true
|
||
|
||
startsWith('abc', 'b');
|
||
// false
|
||
```
|
||
|
||
- endsWith
|
||
|
||
```js
|
||
import { endsWith } from '@antv/util';
|
||
|
||
endsWith([1, 2, 3], 1);
|
||
// false
|
||
|
||
endsWith('abc', 'c');
|
||
// true
|
||
```
|
||
|
||
|
||
- groupBy
|
||
|
||
```js
|
||
import { groupBy } from '@antv/util';
|
||
|
||
groupBy([6.1, 4.2, 6.3], Math.floor);
|
||
// => { '4': [4.2], '6': [6.1, 6.3] }
|
||
|
||
// 根据元素键值来分组
|
||
groupBy([ { user: 'lily' }, { user: 'lucy' } ], 'user');
|
||
```
|
||
|
||
|
||
- group
|
||
|
||
```js
|
||
import { groupBy } from '@antv/util';
|
||
|
||
group([6.1, 4.2, 6.3], Math.floor);
|
||
// => [ [4.2], [6.1, 6.3] ]
|
||
|
||
group([ { user: 'lily' }, { user: 'lucy' } ], 'user');
|
||
// [ [{ user: 'lily' }], [{ user: 'lucy' }] ]
|
||
```
|
||
|
||
|
||
- memoize
|
||
|
||
> 缓存方法的执行结构,一般用于耗时的计算方法。
|
||
|
||
```js
|
||
import { memoize } from '@antv/util';
|
||
|
||
function max(...args) {
|
||
return Math.max(...args);
|
||
}
|
||
|
||
// 第二个参数,是将变量变成 key,如果没有,则直接取第一个参数作为 key
|
||
const mmax = memoize(max, (...args) => args.join('-'));
|
||
|
||
mmax(1, 2, 3, 4, 5);
|
||
```
|
||
|
||
- isFinite
|
||
|
||
> 判断是否是有限数
|
||
|
||
```js
|
||
import { isFinite } from '@antv/util';
|
||
|
||
isFinite(3);
|
||
// => true
|
||
|
||
isFinite('3');
|
||
// => false
|
||
```
|
||
|
||
- set
|
||
|
||
> 按照 path 给 obj 赋值。方法是 mutable 的。
|
||
|
||
```js
|
||
import { set } from '@antv/util';
|
||
|
||
set({ a: { b: { c: 1 } } }, 'a.b', 100);
|
||
// return the original object.
|
||
```
|