0.0.12 • Published 1 year ago

@zhiliteam/utils-core v0.0.12

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

@zhilinteam/utils

本项目是公司内部共用方法库,在开发时尽量全面思考可能遇到的场景。修改已上线代码时需注意兼容问题。

开始

node版本: v15+

包管理器:请务必使用 pnpm ,不要用其他的。

pnpm i @zhilinteam/utils 

目录介绍

── auto-imports.d.ts
├── build.config.ts
├── index.ts
├── LICENSE
├── package.json
├── packages
│  ├── array // 数组方法相关的库
│  │  ├── arrToObj // 将数组转换为对象
│  │  │  ├── arrToObj.test.ts // 测试用例
│  │  │  ├── arrToObj.ts // 方法实现
│  │  │  └── README.md // 方法文档
│  │  ├── build.config.ts
│  │  ├── index.ts
│  │  ├── package.json
│  │  └── unique
│  │     ├── README.md
│  │     ├── unique.test.ts
│  │     └── unique.ts
│  ├── fn
│  │  ├── build.config.ts
│  │  ├── index.ts
│  │  └── package.json
│  └── object
│     ├── build.config.ts
│     ├── index.ts
│     └── package.json
├── plagrounds
├── pnpm-lock.yaml
├── pnpm-workspace.yaml
├── README.md
├── tsconfig.json
└── vitest.config.ts

注释介绍

1、第一行函数介绍,也可写上用途场景

2、@since 版本号:主版本号 . 次版本号 . 补丁版本号

​ 主版本号:重大变更,做了不兼容修改

​ 次版本号:小版本更新,向下兼容

​ 补丁版本号:bug 修复,向下兼容

3、 @param { 数据类型 } 参数

4、 @returns { 数据类型 } 返回值

5、 @example 使用示例

/**
 * 数组对象 转对象
 * 遇到频繁在数组中查找某条数据的场景,可用此方法将数组转化为对象,以某一个key的值作为键,方便取值并且提高代码性能。
 * @since 0.1.0
 *
 * @param {Array[Object]} arr 目标数组
 * @param {String} keyField 对象key取值
 * @param {String} valField value取值 不传默认取当前项
 * @returns {Object}
 * @example
 * arrayToObject([{id:1, name:'zs', age:16}], 'id', 'name') => { 1: 'zs' }
 * arrayToObject([{id:1, name:'zs', age:16}], 'id') => { 1: { id:1, name:'zs', age:16 } }
 */
export function arrayToObject<T>(
  arr: Array<{ [key: string]: T }>,
  keyField: string,
  valField?: string
): object {
  if (!keyField)
    return {}

  if (!arr.length)
    return {}

  return arr.reduce(
    (acc: { [key: string]: T }, cur: { [key: string]: any }) => {
      acc[cur[keyField]] = valField ? cur[valField] : cur
      return acc
    },
    {}
  )
}

测试

每个方法都要在对应文件内写单元测试,测试情况尽可能多的覆盖各个场景

测试使用文档:Vitest

pnpm run test          // 持续监听文件变化进行测试
pnpm run test:once     // 仅测试一次

pnpm run coverage      // 生成测试覆盖率报告