npm package: @luomuxiaoxiao/common-methods
Description: 编写一些简单的常用方法，方便后期直接拉取使用。
Latest version: 1.0.32

# common-methods

编写一些简单的常用方法，方便后期直接拉取使用。

### deepClone

#### 函数说明

深拷贝数据，支持：对象、数组、函数、Date、正则、Set、Map、循环引用

#### 入参

| 参数名称 | 参数类型 | 是否必填 | 参数说明                              |
| -------- | -------- | -------- | ------------------------------------- |
| target   | any      | 是       | 被拷贝的数据                          |
| hash     | WeakMap  | 否       | WeakMap，用于存储循环引用数据的关联性 |

#### 示例

```js
let oraginData = { a: {name:'aaa'}, b: ["b","bb",["bbb"],{bb:"bbbb"}] }
let newData = toLowerCase(oraginData)
```

### getTimeRange

#### 函数说明

获取从n天前到m天前的时间范围，可为负数

#### 入参

| 参数名称  | 参数类型 | 是否必填 | 参数说明                                  |
| --------- | -------- | -------- | ----------------------------------------- |
| dataStart | number   | 是       | 从dataStart天前开始                       |
| dataEnd   | number   | 否       | 到dataEnd天前结束。可选，默认0            |
| format    | string   | 否       | 自定义格式 。可选 默认YYYY-MM-DD HH:mm:ss |

#### 示例

```js
getTimeRange(10);  // 10天前到今天的时间范围
getTimeRange(10, 2, 'YYYY-MM-DD HH:mm:ss');  // 10天前到2天前的时间范围
getTimeRange(10, 2, 'YY-MM-DD');             // 10天前到2天前的简化时间范围
getTimeRange(10, 2, 'MMM D, YYYY');          // 10天前到2天前的详细时间范围
```

### formatDate

#### 函数说明

格式化时间

#### 入参

| 参数名称 | 参数类型                 | 是否必填 | 参数说明                                  |
| -------- | ------------------------ | -------- | ----------------------------------------- |
| date     | Date 、 string 、 number | 是       | 需要格式化的时间                          |
| format   | string                   | 否       | 自定义格式 。可选 默认YYYY-MM-DD HH:mm:ss |

#### 示例

```js
formatDate(new Date());  // 2020-06-23 15:30:00
formatDate(new Date(), 'YYYY-MM-DD HH:mm:ss');  // 2020-06-23 15:30:00
formatDate(new Date(), 'YY-MM-DD');             // 20-06-23
formatDate(new Date(), 'MMM D, YYYY');          // Jun 23, 2020
formatDate(1722050240622);  // 2024-07-27 11:17:20


formatDate('2020-06-23');  // 2020-06-23 08:00:00
```

### selectFile

#### 函数说明

选择文件，拉起文件选择器，选择文件，可指定文件类型和是否允许多选;

选择文件后，FileList类型数据
如果取消选择，返回null

#### 入参options

| 参数名称 | 参数类型 | 是否必填 | 参数说明                                                                                                |
| -------- | -------- | -------- | ------------------------------------------------------------------------------------------------------- |
| accept   | string   | 否       | 指定文件类型 直接指定文件类型：'.jpg,.xls,.txt'，所有图像文件：'image/* 、PDF文件：'application/pdf'... |
| multiple | boolean  | 否       | 是否允许多选，默认为true                                                                                |

#### 示例

```js
async function gotoSelectFile() {
  //  获取图片类型文件,允许多选
  let res = await selectFile({
    accept: 'image/*',
    multiple: true,
  })
  console.log(res)
}
```


### copyText

#### 函数说明

复制文本内容，异步方法，返回布尔值，表示是否复制成功。

#### 入参options

| 参数名称 | 参数类型 | 是否必填 | 参数说明           |
| -------- | -------- | -------- | ------------------ |
| text     | string   | 是       | 需要复制的文本内容 |

#### 示例

```js
  let isCopyOK = await copyText('1233211234567')
  if(isCopyOK) {
    console.log('复制成功')
  }
```




### cmDebounce

#### 函数说明

防抖方法

#### 入参options

| 参数名称 | 参数类型 | 是否必填 | 参数说明            |
| -------- | -------- | -------- | ------------------- |
| function | function | 是       | 需要执行的方法      |
| wait     | number   | 否       | 等待时间，默认300ms |

#### 内部方法

| 方法名称 | 参数说明     |
| -------- | ------------ |
| cancel   | 取消防抖方法 |

#### 示例

```js
 const debounce = cmDebounce(() => {
  console.log('防抖测试')
 }, 3000)

 function handelClickFun() {
  debounce()
 }

 function handelCancelFun() {
  debounce.cancel()
 }
```


### cmThrottle

#### 函数说明

节流方法

#### 入参options

| 参数名称 | 参数类型 | 是否必填 | 参数说明            |
| -------- | -------- | -------- | ------------------- |
| function | function | 是       | 需要执行的方法      |
| wait     | number   | 否       | 等待时间，默认300ms |

#### 示例

```js
 const throttle = cmThrottle(() => {
  console.log('节流测试')
 }, 3000)

 function handelClickFun() {
  throttle()
 }

```