# daily-tool

> This is an everyday use of the function wrapper library.

Latest version **1.0.12** (published 2024-08-30) · ISC license · 0 weekly downloads

## Install

```sh
npm install daily-tool
pnpm add daily-tool
yarn add daily-tool
bun add daily-tool
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.12 |
| Published | 2024-08-30 |
| First published | 2023-10-29 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 44.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Summer |
| Maintainers | ~summer~, youxiaolin |
| Keywords | tool |

## Links

- npm: https://www.npmjs.com/package/daily-tool
- npm.io page: https://npm.io/package/daily-tool

## Alternatives

- [lodash.assign](https://npm.io/package/lodash.assign.md) — 2.3M weekly downloads
- [lodash.chunk](https://npm.io/package/lodash.chunk.md) — 1.8M weekly downloads
- [react-native-ios-utilities](https://npm.io/package/react-native-ios-utilities.md) — 138.5K weekly downloads
- [@technically/lodash](https://npm.io/package/@technically/lodash.md) — 50.9K weekly downloads
- [@fluid-topics/ft-icon](https://npm.io/package/@fluid-topics/ft-icon.md) — 20.6K weekly downloads

## Recent versions

- 1.0.12 (latest) — 2024-08-30
- 1.0.11 — 2024-08-30
- 1.0.10 — 2024-08-30
- 1.0.9 — 2024-08-30
- 1.0.8 — 2024-08-29
- 1.0.7 — 2024-08-07
- 2.0.1 — 2023-11-28
- 2.0.0 — 2023-11-14
- 1.0.3 — 2023-10-31
- 1.0.1 — 2023-10-29

## README

# 不断更新的日常用到的函数

#### 下载命令

```
npm i daily-tool
```

使用方式如下：

```
import { isEmpty } from 'daily-tool'

const example = {
	name: '张三'
}

const test = () => {
    if (isEmpty(example)) {
	    return console.log("该对象为空")
    }

    console.log("该对象不为空")
}

test()
```

#### 判断类型

##### 1、typeJudge

函数名称：typeJudge<br/>
作用：判断数据类型<br/>
类型：isArray | isObject | isString | isDate | isRegExp | isFunction | isBoolean | isNumber | isNull | isUndefined<br/>
例子：typeJudge().isArray(example)<br/>

```js
/**
 * 判断数据类型
 * @param {*} target 需要判断的值
 * @returns
 */
typeJudge().isArray(example)
typeJudge().isObject(example)
typeJudge().isString(example)
typeJudge().isDate(example)
typeJudge().isRegExp(example)
typeJudge().isFunction(example)
typeJudge().isBoolean(example)
typeJudge().isNumber(example)
typeJudge().isNull(example)
typeJudge().isUndefined(example)
```

#### 判断是否为空

##### 1.isEmpty

函数名称：isEmpty<br/>
作用：判断是否是空<br/>
例子：isEmpty(example)<br/>

```js
/**
 * 判断是否是空
 * @param example 需要判断的值
 * @returns {boolean}
 */
isEmpty(example)
```

##### 2、isEmptyObject

函数名称：isEmptyObject<br/>
作用：判断是否是空对象<br/>
例子：isEmptyObject(example)<br/>

```js
/**
 * 判断是否是空对象
 * @param example 需要判断的值
 * @returns {boolean}
 */
isEmptyObject(example)
```

##### 3、isEmptyArray

函数名称：isEmptyArray<br/>
作用：判断是否是空数组<br/>
例子：isEmptyArray(example)<br/>

```js
/**
 * 判断是否是空数组
 * @param example 需要判断的数组
 * @returns {boolean}
 */
isEmptyArray(example)
```

##### 4、isEmptyString

函数名称：isEmptyString<br/>
作用：判断是否是空字符串<br/>
例子：isEmptyString(example)<br/>

```js
/**
 * 判断是否是空字符串
 * @param example 需要判断的字符串
 * @returns {boolean}
 */
isEmptyString(example)
```

##### 5、isEmptyNumber

函数名称：isEmptyNumber<br/>
作用：判断是否是空数值<br/>
例子：isEmptyNumber(example)<br/>

```js
/**
 * 判断是否是空数值
 * @param example 需要判断的数值
 * @returns {boolean}
 */
isEmptyNumber(example)
```

#### 路径

##### 1、getParamsByUrl

函数名称：getParamsByUrl<br/>
作用：根据 url 获取参数<br/>
例子：getParamsByUrl(example)<br/>

```js
/**
 * 根据 url 获取参数
 * @param example 路径地址
 * @returns {object}
 */
getParamsByUrl(example)
```

##### 2、encodeUrl

函数名称：encodeUrl<br/>
作用：URL 编码<br/>
例子：encodeUrl(url)<br/>

```js
/**
 * URL编码
 * @param {string} url
 * @return {string}
 */
encodeUrl(url)
```

##### 3、decodeUrl

函数名称：decodeUrl<br/>
作用：URL 解码<br/>
例子：decodeUrl(url)<br/>

```js
/**
 * URL解码
 * @param {string} url
 * @return {string}
 */
decodeUrl(url)
```

#### 节点

##### 1、getElementSize

函数名称：getElementSize<br/>
作用：获取元素尺寸<br/>
例子：getElementSize(example)<br/>

```js
/**
 * 获取元素尺寸
 * @param example 节点
 * @returns {object}
 */
getElementSize(document.getElementById('app'))
```

##### 2、getScrollOffset

函数名称：getScrollOffset<br/>
作用：获取滚动条偏移量<br/>
例子：getScrollOffset(example)<br/>

```js
/**
 * 获取滚动条偏移量
 * @param example 节点
 * @returns {object}
 */
getScrollOffset(document.getElementById('app'))
```

##### 3、getViewportSize

函数名称：getViewportSize<br/>
作用：获取视口尺寸<br/>
例子：getViewportSize()<br/>

```js
/**
 * 获取视口尺寸
 * @returns {object}
 */
getViewportSize()
```

##### 4、findParents

函数名称：findParents<br/>
作用：找元素 el 的第 n 级父元素<br/>
例子：findParents(el, n)<br/>

```js
/**
 * 找元素的第 n 级父元素
 * @param el 节点
 * @param n 级数
 * @returns {object}
 */
findParents(el, n)
```

##### 5、matcheParentsEl

函数名称：matcheParentsEl<br/>
作用：判断 parentSelector 是否是 el 的父节点<br/>
例子：matcheParentsEl(el, parentSelector)<br/>

```js
/**
 * 判断 parentSelector 是否是 el 的父节点
 * @param el 节点
 * @param parentSelector 节点
 * @returns {Boolean}
 */
matcheParentsEl(el, parentSelector)
```

#### 日期

##### 1、formatDate

函数名称：formatDate<br/>
作用：格式化日期（时间戳转换成日期）<br/>
例子：formatDate(example)<br/>

```js
/**
 * 格式化日期（时间戳转换成日期）
 * @param example 时间戳
 * @returns {String}
 */
formatDate(example)
```

##### 2、convertToTimestamp

函数名称：convertToTimestamp<br/>
作用：日期转换成时间戳<br/>
例子：convertToTimestamp('2023-11-25')或 convertToTimestamp('2023/11/25')或 convertToTimestamp('2023.11.25')<br/>

```js
/**
 * 日期转换成时间戳
 * @param example 日期
 * @returns {String}
 */
convertToTimestamp(example)
```

#### 数组

##### 1、sortByProperty

函数名称：sortByProperty<br/>
作用：数组按 type 升序或者降序排列，第三个参数'asc'是升序,'desc'是降序<br/>
例子：sortByProperty(data, property, 'desc')<br/>

```js
/**
 * 数组按 type 升序或者降序排列，第三个参数'asc'是升序,'desc'是降序
 * @param data 数组
 * @param property 排序字段
 * @param type 排序类型
 * @returns {Object}
 */
sortByProperty(data, property, type)
```

##### 2、bubbleSort

函数名称：bubbleSort<br/>
作用：数组冒泡排序<br/>
例子：bubbleSort(arr)<br/>

```js
/**
 * 数组冒泡排序
 * @param arr 数组
 * @returns {Object}
 */
bubbleSort(arr)
```

##### 3、removeByCondition

函数名称：removeByCondition<br/>
作用：删除数组中符合条件的元素<br/>
例子：removeByCondition(arr)<br/>

```js
/**
 * 删除数组中符合条件的元素
 * @param arr 数组
 * @param condition 条件
 * @returns {Object}
 */
removeByCondition([1, 2, 3, 4, 5, 6], (item) => [1, 2, 6].includes(item))
```

##### 4、sumArr

函数名称：sumArr<br/>
作用：数组求和<br/>
例子：sumArr(arr)<br/>

```js
/**
 * 数组求和
 * @param arr 数组
 * @returns {Number}
 */
sumArr([1, 2, 3, 4, 5, 6])
```

##### 5、averageArr

函数名称：averageArr<br/>
作用：数组求平均值<br/>
例子：averageArr(arr)<br/>

```js
/**
 * 数组求平均值
 * @param arr 数组
 * @returns {Number}
 */
averageArr([1, 2, 3, 4, 5, 6])
```

##### 6、medianArr

函数名称：medianArr<br/>
作用：数组求中位数<br/>
例子：medianArr(arr)<br/>

```js
/**
 * 数组求中位数
 * @param arr 数组
 * @returns {Number}
 */
medianArr([1, 2, 3, 4, 5, 6])
```

##### 7、maxArr

函数名称：maxArr<br/>
作用：数组求最大值<br/>
例子：maxArr(arr)<br/>

```js
/**
 * 数组求最大值
 * @param arr 数组
 * @returns {Number}
 */
maxArr([1, 2, 3, 4, 5, 6])
```

##### 8、minArr

函数名称：minArr<br/>
作用：数组求最小值<br/>
例子：minArr(arr)<br/>

```js
/**
 * 数组求最小值
 * @param arr 数组
 * @returns {Number}
 */
minArr([1, 2, 3, 4, 5, 6])
```

##### 9、mostFrequent

函数名称：mostFrequent<br/>
作用：数组求出现次数最多的元素<br/>
例子：mostFrequent(arr)<br/>

```js
/**
 * 数组求出现次数最多的元素
 * @param arr 数组
 * @returns {Number}
 */
mostFrequent([1, 2, 3, 4, 5, 6])
```

##### 10、uniqueArr

函数名称：uniqueArr<br/>
作用：数组去重<br/>
例子：uniqueArr(arr)<br/>

```js
/**
 * 数组去重
 * @param arr 数组
 * @returns {Array}
 */
uniqueArr([1, 2, 3, 4, 5, 6])
```

#### 时间戳

##### 1、getStartEndTime

函数名称：getStartEndTime<br/>
作用：获取各类时间起始时间戳<br/>

```js
/**
 *获取各类时间起始时间戳
 */

const {
  nowTimeStamp,
  todayStartTimeStamp,
  todayEndTimeStamp,
  yesterdayStartTimeStamp,
  yesterdayEndTimeStamp,
  thisWeekStartTimeStamp,
  thisWeekEndTimeStamp,
  thisMonthStartTimeStamp,
  thisMonthEndTimeStamp,
  thisYearStartTimeStamp,
  thisYearEndTimeStamp,
} = getStartEndTime()
```

<br/>

#### 加载 js 文件

##### 1.loadJs

函数名称：loadJs<br/>
作用：加载\*\*.js 文件<br/>
例子：loadJs(scriptSrc, successCallback, id, content)<br/>

```js
/**
 * 加载**.js文件
 * @param scriptSrc 文件路径
 * @param successCallback 加载成功回调函数
 * @param script 标签id
 * @param content js标签内的内容
 */

<script>loadJs('https://static.wxb.com.cn/xxx.js')</script>
```

##### 2.isIncludeJs

函数名称：isIncludeJs<br/>
作用：是否已经加载过\*\*.js 文件<br/>

```js
/**
 *是否已经加载过**.js文件
 * @param name js文件名
 */

<script>isIncludeJs('lodash')</script>
```

#### 其他

##### 1、deepClone

函数名称：deepClone<br/>
作用：深拷贝<br/>
说明：obj 是要复制的对象。它可以是任何类型的对象，包括但不限于数组、普通对象、日期、正则表达式和错误对象。cache 是可选参数，默认为空数组，用于检测和阻止循环引用。<br/>
当传入的对象 obj 是基础类型（如 string, number, boolean, undefined, null）时，函数直接返回其副本；如果是对象（包括数组、函数等），则会进行深度克隆。对于内置的 Date , RegExp 和 Error 对象，进行了特殊处理。对于数组，逐项复制每一项元素。对于其他对象，复制每个属性。<br/>

例子：deepClone(example)<br/>

```js
/**
 * 深拷贝
 * @param example 要复制的对象
 * @returns {any}
 */
deepClone(example)
```

##### 2、getStartEndTime

函数名称：randomNum<br/>
作用：指定范围内的随机整数<br/>
例子：randomNum(minimum, maximum)<br/>

```js
/**
 * 指定范围内的随机整数
 * @param minimum 最小值
 * @param maximum 最大值
 * @returns {int}
 */
randomNum(minimum, maximum)
```

##### 3、numFilter

函数名称：randomNum<br/>
作用：数字超过 99 显示 99+<br/>
例子：numFilter(num,'+')<br/>

```js
/**
 * 数字超过 99 显示 99+
 * @param num 数字
 * @param type 超出字符
 * @returns {String}
 */
numFilter(num, '+')
```

##### 4、computeTime

函数名称：computeTime<br/>
作用：计算函数执行所用时间<br/>
例子：computeTime(func,args)<br/>

```js
/**
 * 计算函数执行所用时间 可带参数
 * @param {*} func 函数
 * @param {*} args 函数参数
 * @returns
 */
computeTime(func, args)
```

##### 5、isDevice

函数名称：isDevice<br/>
作用：判断是 android 还是 ios 还是 web<br/>
例子：isDevice()<br/>

```js
/**
 * 判断是 android 还是 ios 还是 web
 * @returns
 */
isDevice()
```

##### 6、isWx

函数名称：isWx<br/>
作用：判断是否为微信<br/>
例子：isWx()<br/>

```js
/**
 * 判断是否为微信
 * @returns
 */
isWx()
```

##### 7、imgLoadAll

函数名称：imgLoadAll<br/>
作用：判断图片是否全部加载完成<br/>
例子：imgLoadAll(arr, callback)<br/>

```js
/**
 * 判断图片是否全部加载完成
 * @param arr 图片数组
 * @param callback 加载完成回调函数
 * @returns
 */
imgLoadAll(arr, callback)
```

##### 8、copyTxt

函数名称：copyTxt<br/>
作用：复制文本<br/>
例子：copyTxt(text, fn)<br/>

```js
/**
 * 复制文本
 * @param text 文本
 * @param fn 回调函数
 * @returns
 */
copyTxt(text, fn)
```

##### 9、downloadBaseFile

函数名称：downloadBaseFile<br/>
作用： base64 图片下载<br/>
例子：downloadBaseFile(base64, fileName)<br/>

```js
/**
 * base64 图片下载
 * @param base64 base64图片
 * @param fileName 文件名
 * @returns
 */
downloadBaseFile(base64, fileName)
```

##### 10、debounce

函数名称：debounce<br/>
作用： 防抖<br/>
例子：debounce(func, wait, immediate)<br/>

```js
/**
 * 防抖
 * @param func 函数
 * @param wait 延迟时间
 * @param immediate 是否立即执行
 * @returns
 */
debounce(func, wait, immediate)
```

##### 11、throttle

函数名称：throttle<br/>
作用： 节流<br/>
例子：throttle(func, delay)<br/>

```js
/**
 * 节流
 * @param func 函数
 * @param delay 延迟时间
 * @returns
 */
throttle(func, delay)
```

##### 12、validatePasswordStrength

函数名称：validatePasswordStrength<br/>
作用： 密码强度校验<br/>
例子：validatePasswordStrength(password)<br/>

```js
/**
 * 密码强度校验
 * @param password 密码
 * @returns
 */
validatePasswordStrength(password)
```

##### 13、once

函数名称：once<br/>
作用： 只执行一次<br/>
例子：once(func)<br/>

```js
/**
 * 只执行一次
 * @param func 函数
 * @returns
 */
const sayHello = once(() => {
  console.log('Hello, this will be logged only once!')
})

// 调用包装后的函数多次，但实际只执行一次
sayHello() // 输出 "Hello, this will be logged only once!"
sayHello() // 不会再次输出
sayHello() // 也不会再次输出
```

##### 14、generateUUID

函数名称：generateUUID<br/>
作用： 生成 UUID<br/>
例子：generateUUID()<br/>

```js
/**
 * 生成 UUID
 * @returns
 */
generateUUID()
```

#### 正则表达式判断

##### 1、checkStr

函数名称：checkStr<br/>
作用：正则表达式判断类型<br/>
例子：checkStr(str, type)<br/>

```js
/**
 * 正则表达式判断
 * @param str 字符串
 * @param type 类型
 * @returns
 */
checkStr(str, type)
```

`type` 类型：

|  类型   |                             描述                             |
| :-----: | :----------------------------------------------------------: |
|  phone  |                           手机号码                           |
|   tel   |                             座机                             |
|  card   |                            身份证                            |
|   pwd   | 密码以字母开头，长度在 6~18 之间，只能包含字母、数字和下划线 |
| postal  |                           邮政编码                           |
|   QQ    |                            QQ 号                             |
|  email  |                             邮箱                             |
|  money  |                      金额(小数点 2 位)                       |
|   URL   |                             网址                             |
|   IP    |                              IP                              |
|  date   |                           日期时间                           |
| number  |                             数字                             |
| english |                             英文                             |
| chinese |                             中文                             |
|  lower  |                             小写                             |
|  upper  |                             大写                             |
|  HTML   |                          HTML 标记                           |

---
_Source: https://npm.io/package/daily-tool · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
