Skip to content

API

按照基础、对象、数组、文件、其他五个分类介绍 @obr-fe/utils的能力。

基础

isEmpty

判断数据是否为 null 或者类似 null,返回一个布尔值。

参数

参数名说明类型默认值
value需要判断的数据any-
undefinedValue判断类似 null值时是否包含undefinedbooleantrue
vue
<script setup>
import { isEmpty } from '@obr-fe/utils'

isEmpty(null) // true
isEmpty('null') // true
isEmpty(undefined) // true
isEmpty(undefined, false) // false
</script>

isEmptyValue

判断数据是否为空值,返回一个布尔值。空值包含nullundefined''NaN

参数

参数名说明类型默认值
value需要判断的数据any-
vue
<script setup>
import { isEmptyValue } from '@obr-fe/utils'

isEmptyValue(null) // true
isEmptyValue(undefined) // true
isEmptyValue('') // true
isEmptyValue(Number.NaN) // true
isEmptyValue(0) // false
</script>

isEmptyObject

判断数据是否为空对象,返回一个布尔值。

参数

参数名说明类型默认值
object需要判断的对象ObjectDataType-
vue
<script setup>
import { isEmptyObject } from '@obr-fe/utils'

isEmptyObject({}) // true
isEmptyObject({ name: '' }) // false
isEmptyObject([]) // false

// 当然这个函数也可以做空值的校验
isEmptyObject('') // true
isEmptyObject(0) // true
</script>

isEmptyArray

判断数据是否为空数组,返回一个布尔值。仅可用于一维数组的非空判断。

参数

参数名说明类型默认值
array需要判断的数组any[][]
vue
<script setup>
import { isEmptyArray } from '@obr-fe/utils'

isEmptyArray([]) // true
isEmptyArray([0]) // false

// 由于设置了参数默认值为[],所以传入undefined值时亦会返回true
isEmptyArray() // true
isEmptyArray(undefined) // true
</script>

isMeaninglessArray

判断数据是否为无意义的数组,即数组的每个元素都为空值/类似空值,返回一个布尔值。仅可用于一维数组的判断。

参数

参数名说明类型默认值
array需要判断的数组any[][]
vue
<script setup>
import { isMeaninglessArray } from '@obr-fe/utils'

isMeaninglessArray([]) // true
isMeaninglessArray(['', null, Number.NaN, undefined]) // true
isMeaninglessArray([0]) // false

// 由于设置了参数默认值为[],所以传入undefined值时亦会返回true
isMeaninglessArray() // true
isMeaninglessArray(undefined) // true

// 传入非数组类型的数据时,返回false
isMeaninglessArray({} as any) // false
</script>

getDataType

判断传入的数据为何种类型,返回一个 DataType 类型的字符串。

参数

参数名说明类型默认值
data需要判断的数据any-
vue
<script setup>
import { getDataType } from '@obr-fe/utils'

getDataType([]) // array
getDataType(0) // number
getDataType('') // string
getDataType(new FormData()) // formdata
</script>

getFileType

根据文件全路径 url 获取文件的类型,返回一个大写的字符串(即最后一个 . 后面的文件后缀)或返回 未知

参数

参数名说明类型默认值
url文件全路径string-
vue
<script setup>
import { getFileType } from '@obr-fe/utils'

getFileType('https://xx.xxx.com/files/demo.png') // PNG
getFileType('https://xx.xxx.com/files/images/1') // 未知
</script>

replaceLastMatch

将最后一个匹配成功的字符替换为期望值,并返回新的替换后的字符串。

参数

参数名说明类型默认值
str原始字符串string-
char需要匹配的字符string-
target期望替换值string-
vue
<script setup>
import { replaceLastMatch } from '@obr-fe/utils'

replaceLastMatch('hello world!', '!', '.') // hello world.
replaceLastMatch('hello world!', 'l', 'L') // helLo world!
replaceLastMatch('hello world!', '', 'A') // hello world!A
replaceLastMatch('hello world!', 'obr', 'OBR') // hello world!
</script>

replaceMatch

按照传入的正则表达式,将所有匹配到的字符替换为期望值。

参数

参数名说明类型默认值
str原始字符串string-
reg正则表达式RegExp-
target期望替换值string-
vue
<script setup>
import { replaceMatch } from '@obr-fe/utils'

// 将非数字和-的字符替换为空字符
replaceLastMatch('+86 -137 0123/4567', /[^\d./]/, '') // 86-13701234567
</script>

formatPositiveNumber

将数字转换为正数并返回。

参数

参数名说明类型默认值
value数值number-
vue
<script setup>
import { formatPositiveNumber } from '@obr-fe/utils'

formatPositiveNumber(-1) // 0
formatPositiveNumber(Number.NaN) // 0
formatPositiveNumber(1.2) // 1.2
</script>

string2json

将传入的JSON字符串转换为JSON对象,传入的字符串转换失败时,返回默认值或空对象。

参数

参数名说明类型默认值
strJSON字符串string-
defaultValue默认值any{}
vue
<script setup>
import { string2json } from '@obr-fe/utils'

string2json('') // {}
string2json('', []) // []
string2json('{"type":"module"}') // {type: 'module'}
</script>

json2string

将传入的JSON对象/数组转换为JSON字符串,传入的对象/数组无法转换为字符串时,返回空字符串。

参数

参数名说明类型默认值
jsonJSON对象/数组any-
vue
<script setup>
import { json2string } from '@obr-fe/utils'

json2string([File]) // ''
string2json([1, 3]) // '[1,3]'
</script>

对象

objectSortByKey

根据对象中的属性名称对传入对象进行排序,并返回一个新的排序后的对象。

参数

参数名说明类型默认值
object需要排序的对象ObjectDataType{}
asc是否升序booleantrue
vue
<script setup>
import { objectSortByKey } from '@obr-fe/utils'

objectSortByKey({ value: '值', label: '标签' }) // { label: "标签", value: "值" }
objectSortByKey({ label: '标签', value: '值' }, false) // { value: "值", label: "标签" }
</script>

json2url

将传入的 json 对象转换为 url query 格式,返回一个新的字符串。

参数

参数名说明类型默认值
json需要转换的对象ObjectDataType{}
vue
<script setup>
import { json2url } from '@obr-fe/utils'

json2url({ id: 1, type: 'normal' }) // id=1&type=normal
</script>

url2json

将传入的 url query 字符串转换为对象格式,返回一个新的对象。

参数

参数名说明类型默认值
url需要转换的 urlstring-
vue
<script setup>
import { url2json } from '@obr-fe/utils'

url2json('http://xx.xxx.com/api/query?name=abc&t=1359') // { name: 'abc', t: '1359' }
</script>

json2formdata

将传入的 json 对象转换为 FormData 格式,返回一个新的 FormData 对象。

参数

参数名说明类型默认值
json需要转换的 json 对象ObjectDataType{}
vue
<script setup>
import { json2formdata } from '@obr-fe/utils'

json2formdata({ name: 'name', value: 'value' }) // FormData {}
</script>

formdata2json

将传入的 FormData 对象转换为普通对象格式,返回一个新的对象。

参数

参数名说明类型默认值
formdata需要转换的 FormData 对象FormData-
vue
<script setup>
import { formdata2json } from '@obr-fe/utils'

const formdata = new FormData()
formdata.append('name', 'demo-name')

formdata2json(formdata) // { name: 'demo-name' }
</script>

deleteEmptyValue

删除传入对象中的空值,返回一个新的对象。

参数

参数名说明类型默认值
data数据对象ObjectDataType{}
vue
<script setup>
import { deleteEmptyValue } from '@obr-fe/utils'

deleteEmptyValue({ prop1: '', prop2: Number.NaN, prop3: null, prop4: undefined, prop5: 0 }) // { prop5: 0 }
</script>

cloneData2Object

以目标对象中的属性为准,将完整对象中对应的属性值拷贝到目标对象,并返回一个新的对象。

参数

参数名说明类型默认值
data完整对象ObjectDataType-
object目标对象ObjectDataType-
vue
<script setup>
import { cloneData2Object } from '@obr-fe/utils'

const originObject = { name: 'zhang san', age: 10, address: 'HongKong' }
const targetObject = { name: 'wang wu', address: 'TaiPei' }

cloneData2Object(originObject, targetObject) // { name: 'zhang san', address: 'HongKong' }
</script>

hasProperties

判断传入对象是否存在指定的属性,返回布尔值。

参数

参数名说明类型默认值
object数据对象ObjectDataType-
props属性数组string[]-
vue
<script setup>
import { hasProperties } from '@obr-fe/utils'

const data = { name: 'zhang san', age: 10, address: 'HongKong' }

hasProperties(['name', 'age']) // true
hasProperties(['name', 'tel']) // false
</script>

getObjectFromMapping

根据传入的对象和映射关系创建新的数据对象,并返回一个新的对象。

参数

参数名说明类型默认值
data数据对象ObjectDataType-
mapping映射关系,key代表新对象的属性,value代表传入对象的属性Record<string, string>-
vue
<script setup>
import { getObjectFromMapping } from '@obr-fe/utils'

const data = { name: 'zhang san', age: 10, address: 'HongKong' }

getObjectFromMapping(data, { userName: 'name', userAddress: 'address' }) // { userName: 'zhang san', userAddress: 'HongKong' }
</script>

数组

array2tree

将传入的对象数组转换为树型结构数据,返回一个树型数组 TreeItemType[]

参数

参数名说明类型默认值
data对象数组ObjectDataType[][]
idid 字段名stringid
pidpid 字段名stringpid
childrenchildren 字段名stringchildren
vue
<script setup>
import { array2tree } from '@obr-fe/utils'

const data = [{ id: 'A01', pid: 'A', label: 'China' }, { id: 'A0101', pid: 'A01', label: 'HongKong' }]

array2tree(data) // [{ id: 'A01', pid: 'A', label: 'China', children: [{ id: 'A0101', pid: 'A01', label: 'HongKong' }] }]
</script>

array2option

将传入对象根据 alias 转换为选项式数组,返回一个新数组 BaseOptionType[]

参数

参数名说明类型默认值
data对象数组ObjectDataType[][]
alias别名 map{ label: string; value: string }-
vue
<script setup>
import { array2option } from '@obr-fe/utils'

const data = [{ name: 'zhang san', age: 10 }]

array2option(data, { label: 'name', value: 'age' }) // [{ label: 'zhang san', value: 10 }]
</script>

deleteEmptyElement

将传入数组中的空元素删除,并返回一个新数组。

参数

参数名说明类型默认值
object数组T[]-
props属性数组string[]-
vue
<script setup>
import { deleteEmptyElement } from '@obr-fe/utils'

const data = ['', undefined, null, Number.NaN, 0, {}]

deleteEmptyElement(data) // [0, {}]
</script>

getElementsByValues

根据给定的值集合,查找树型结构数据中符合条件的元素,并返回一个新数组。

参数

参数名说明类型默认值
array数据对象TreeItemType[][]
values数据集合(string | number)[]-
alias别名 alias{ value?: string; children?: string }-
vue
<script setup>
import { getElementsByValues } from '@obr-fe/utils'

const data = [
  { id: 'A01', name: '组一', children: [{ id: 'A0101', name: '分支一', children: [{ id: 'A010101', name: '分支一', children: null }] }] },
  { id: 'A02', name: '组二', children: [{ id: 'A0201', name: '分支一', children: null }] },
  { id: 'A03', name: '组三', children: [{ id: 'A0301', name: '分支一', children: null }] }
]

const values = ['A01', 'A0101', 'A010101']

getElementsByValues(data, values, { value: 'id' }) // [{ id: 'A01', name: '组一' }, { id: 'A0101', name: '分支一' }, { id: 'A010101', name: '分支一' }]
</script>

tree2array

将树型结构数组拉平为一维数组,返回一个新数组。

参数

参数名说明类型默认值
data树型数据TreeItemType[][]
alias别名 aliasstringchildren
vue
<script setup>
import { tree2array } from '@obr-fe/utils'

const data = [
  { id: 'A01', name: '组一', children: [{ id: 'A0101', name: '分支一', children: [{ id: 'A010101', name: '分支一', children: null }] }] },
  { id: 'A02', name: '组二', children: [{ id: 'A0201', name: '分支一', children: null }] }
]

tree2array(data)
// result
// [{ id: 'A01', name: '组一' }, { id: 'A0101', name: '分支一' }, { id: 'A010101', name: '分支一' }, { id: 'A02', name: '组二' }, { id: 'A0201', name: '分支一' }]
</script>

uniqueArrayByKeys

根据传入的 keys 将对象数组去重,返回一个新数组。

参数

参数名说明类型默认值
array对象数组ObjectDataType[][]
keys数组对象中的键string-
vue
<script setup>
import { uniqueArrayByKeys } from '@obr-fe/utils'

const data = [
  { id: 'A01', name: '组一' },
  { id: 'A02', name: '组一' },
  { id: 'A01', name: '组一', age: 12 },
  { id: 'A01', name: '组二' }
]

uniqueArrayByKeys(data)
// result
// [{ id: 'A01', name: '组一' }, { id: 'A02', name: '组一' }, { id: 'A01', name: '组二' }]
</script>

deleteElement

根据传入的 values 删除简单数组中的符合规则的元素,返回一个新数组。

参数

参数名说明类型默认值
array原数组(number|string|boolean)[]-
values符合的元素值(number|string|boolean)[][]
vue
<script setup>
import { deleteElement } from '@obr-fe/utils'

const data = [1, 2, 3, 4, 5, 6, 7, 7]

deleteElement(data, [1, 3, 5, 7])
// result
// [2, 4, 6]
</script>

deleteElementPro

根据传入的 rules 删除数组中的符合规则的元素,返回一个新数组。

参数

参数名说明类型默认值
array原数组any[]-
rules符合的元素值any[][]
vue
<script setup>
import { deleteElementPro } from '@obr-fe/utils'

// 符合的元素值,如:[1, { name: 'x', age: 12 }, { name: 'z' }]则删除「元素 = 1 或 元素.name = 'x' && 元素.age = 'x' 或 元素.name = 'z'」的元素
const data = [1, 1, 3, Number.NaN, { name: 1, value: 1 }, { name: 1, value: 1, id: '-1' }, { name: 2, value: 3 }, { name: 3, value: 4 }]
const rules = [1, Number.NaN, { name: 1, value: 1 }, { value: 3 }]
deleteElementPro(data, rules)
// result
// [3, { name: 3, value: 4 }]
</script>

文档

setDocumentTitle

设置文档标题。可用于路由切换为每个路由设置不同的文档标题。

参数

参数名说明类型默认值
title文档标题string-
vue
<script setup>
import { setDocumentTitle } from '@obr-fe/utils'

setDocumentTitle('@obr-fe/utils API 文档')
</script>

getPx

根据窗口大小和设计稿的比例动态计算像素值,返回一个数值。

参数

参数名说明类型默认值
px基于设计稿的原始像素值number-
width设计稿宽度number1920
height设计稿高度number1080
vue
<script setup>
import { getPx } from '@obr-fe/utils'

getPx(14) // 6.33 具体值由当前视口于设计稿的比例决定
</script>

getMaxZIndex

获取文档所有包含 z-index 属性节点的 z-index 最大值 并 +1

vue
<script setup>
import { nextTick, onMounted } from 'vue'
import { getMaxZIndex } from '@obr-fe/utils'

onMounted(() => nextTick(() => getMaxZIndex())) // 1
</script>

文件

chunkFile

将文件按照传入的单个文件大小为单位切片,并返回一个新的文件切片数组 FileChunkType[]

参数

参数名说明类型默认值
file文件对象File-
mb单个文件切片大小,单位 MBnumber4
vue
<script setup>
import { chunkFile } from '@obr-fe/utils'

const file = new FileReader()

// ...

chunkFile(file) // [...]
</script>

其他

removeElement

将传入的 DOM 节点从节点树中移除。

参数

参数名说明类型默认值
element节点HTMLElement-
vue
<script setup>
import { removeElement } from '@obr-fe/utils'

const element = document.createElement('html')
document.append(element)

removeElement(element)
</script>

hex2rgba

将传入的 HEX 格式的颜色转换为 RGBA 格式的颜色,返回一个新的颜色字符串。

参数

参数名说明类型默认值
colorHEX 格式颜色string-
alpha透明度number-
vue
<script setup>
import { hex2rgba } from '@obr-fe/utils'

removeElement('#FFFFFF', 0.5) // rgba(255, 255, 255, 0.5)
</script>

getValueByMapping

根据映射关系对象,查找 key 对应的值,无对应关系时返回默认值(default对应的值)。

参数

参数名说明类型默认值
mapping映射关系对象MappingType-
key映射关系对象 keystring | number-
vue
<script setup>
import { getValueByMapping } from '@obr-fe/utils'

const mapping: MappingType = {
  abnormal: '异常',
  normal: '正常',
  default: '未知'
}

getValueByMapping(mapping, 'abnormal') // 异常
getValueByMapping(mapping, 'normal') // 正常
getValueByMapping(mapping, 'status') // 未知
</script>

number2thousands

将传入的数字添加千分符 ,,并返回一个新的字符串。

参数

参数名说明类型默认值
number数值number-
vue
<script setup>
import { number2thousands } from '@obr-fe/utils'

number2thousands(123456.7809) // 123,456.7809
</script>

usePromise

接收一个函数作为参数, 并返回一个新的Promise

参数

参数名说明类型默认值
fn传入的函数支持(异步函数)uknown-
vue
<script setup>
import { usePromise } from '@obr-fe/utils'

function fn() {
  return 'ABC'
}

usePromise(fn).then((data) => {
  console.log(data)
}) // ABC
</script>

getMimeByUrl

通过fetch获取文件的MIME类型, 返回 mime 字符串, 若字符串为空则代表获取异常。

参数

参数名说明类型默认值
url传入的文件地址string-
vue
<script setup>
import { getMimeByUrl } from '@obr-fe/utils'

const fileUrl = 'http://192.168.2.35/ims-resource/2024/11/19/113423809/IMG_1607.JPG?imageView2/1/w/80/h/80'

getMimeByUrl(fileUrl).then((mime) => {
  console.log(mime)
}) // image/jpeg
</script>