A common util collection for codeour projects
codeour 开发的轻量级工具方法库。
js
// 所有的 api 是都这么引入,名字不同而已
import { each, get } from '@codeour/util';
each(arr, (item, idx) => {
});
const x = get(obj, 'a.b', '');
`
API 文档
> 目前使用到的、且推荐使用的 API 文档,不在文档内的不建议使用。
后续方法添加到文档需要经过审核:
1. ts 类型定义是否完善
2. 单测是否覆盖
3. 文档实例是否覆盖全部能力
> 推荐使用的 API 文档如下:
- array
- 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 '@codeour/util';
const has = contains([1, 2, 3], 1);
`
- startsWith
`js
import { startsWith } from '@codeour/util';
startsWith([1, 2, 3], 1);
// true
startsWith('abc', 'b');
// false
`
- endsWith
`js
import { endsWith } from '@codeour/util';
endsWith([1, 2, 3], 1);
// false
endsWith('abc', 'c');
// true
`
- groupBy
`js
import { groupBy } from '@codeour/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 '@codeour/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 '@codeour/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 '@codeour/util';
isFinite(3);
// => true
isFinite('3');
// => false
`
- set
> 按照 path 给 obj 赋值。方法是 mutable 的。
`js
import { set } from '@codeour/util';
set({ a: { b: { c: 1 } } }, 'a.b', 100);
// return the original object.
``