# Util 常用工具
# 节流和防抖
常用方式
throttle 触发了:
debounce 触发了:
<template>
<div>
<div>
<span>throttle</span>
<jp-input v-model="num" @input="_input1"></jp-input>
<span>触发了:{{ text1 }}</span>
</div>
<div>
<span>debounce</span>
<jp-input v-model="num2" @input="_input2"></jp-input>
<span>触发了:{{ text2 }}</span>
</div>
</div>
</template>
<script>
export default {
mounted() {},
data() {
return {
num: '',
num2: '',
text1: '',
text2: '',
throttle: this.$jpUtil.throttle(1000, (data) => {
console.log('jpThrottle', data)
this.text1 = data
}),
debounce: this.$jpUtil.debounce(1000, (data) => {
console.log('jpDebounce', data)
this.text2 = data
})
}
},
methods: {
_input1(e) {
this.throttle(e)
},
_input2(e) {
this.debounce(e)
}
},
computed: {}
}
</script>
<style scoped>
.jp-input {
width: 50%;
margin-top: 20px;
}
</style>
显示代码
# 深拷贝
常用方式
原始数据
{}
深拷贝后,修改field1的值
<template>
<div>
<div>原始数据</div>
<div v-html="base"></div>
<div style="margin-top: 20px">深拷贝后,修改field1的值</div>
<div v-html="baseClone"></div>
</div>
</template>
<script>
export default {
data() {
return {
base: {},
baseClone: ''
}
},
mounted() {
this.base = {
field1: 1,
field2: undefined,
field3: {
child: 'child'
},
field4: [2, 4, 8],
empty: null,
bool: new Boolean(true),
num: new Number(2),
str: new String(2),
symbol: Object(Symbol(1)),
date: new Date(),
reg: /\d+/,
error: new Error(),
func1: () => {
console.log('code秘密花园')
},
func2: function (a, b) {
return a + b
}
}
this.baseClone = this.$jpUtil.deepClone(this.base)
this.baseClone.field1 = 2
console.log(this.baseClone)
}
}
</script>
<style scoped></style>
显示代码
# 常见空判断
空判断
空字符串''
true
空map: {}
true
null
true
undefined
true
空数组[]
true
<template>
<div>
<div class="title">空判断</div>
<div class="content">
<span class="pre">空字符串''</span>
{{ format1 ? 'true' : 'false' }}
</div>
<div class="content">
<span class="pre">空map: {}</span>
{{ format2 ? 'true' : 'false' }}
</div>
<div class="content">
<span class="pre">null</span>
{{ format3 ? 'true' : 'false' }}
</div>
<div class="content">
<span class="pre">undefined</span>
{{ format4 ? 'true' : 'false' }}
</div>
<div class="content">
<span class="pre">空数组[]</span>
{{ format5 ? 'true' : 'false' }}
</div>
</div>
</template>
<script>
export default {
mounted() {},
computed: {
format1() {
return this.$jpUtil.isEmpty('')
},
format2() {
return this.$jpUtil.isEmpty({})
},
format3() {
return this.$jpUtil.isEmpty(null)
},
format4() {
return this.$jpUtil.isEmpty(undefined)
},
format5() {
return this.$jpUtil.isEmpty([])
}
}
}
</script>
<style scoped>
@import url('./common.css');
</style>
显示代码
# 常见正则校验
邮箱验证
true
手机验证
true
身份证
false
URL验证
true
是否全是小写字母
false
是否全是大写字母
true
<template>
<div>
<div class="title">邮箱验证</div>
<div class="content">
<jp-input clearable style="width: 240px" placeholder="请输入" v-model="email"></jp-input>
{{ validEmail(email) }}
</div>
<div class="title">手机验证</div>
<div class="content">
<jp-input clearable style="width: 240px" placeholder="请输入" v-model="mobile"></jp-input>
{{ validMobile(mobile) }}
</div>
<div class="title">身份证</div>
<div class="content">
<jp-input clearable style="width: 240px" placeholder="请输入" v-model="idCard"></jp-input>
{{ validateIDcard(idCard) }}
</div>
<div class="title">URL验证</div>
<div class="content">
<jp-input clearable style="width: 240px" placeholder="请输入" v-model="url"></jp-input>
{{ validURL(url) }}
</div>
<div class="title">是否全是小写字母</div>
<div class="content">
<jp-input clearable style="width: 240px" placeholder="请输入" v-model="lowerCase"></jp-input>
{{ validLowerCase(lowerCase) }}
</div>
<div class="title">是否全是大写字母</div>
<div class="content">
<jp-input clearable style="width: 240px" placeholder="请输入" v-model="upCase"></jp-input>
{{ validUpperCase(upCase) }}
</div>
</div>
</template>
<script>
export default {
mounted() {},
data() {
return {
url: 'http://www.baidu.com',
mobile: '18021323423',
email: '22@qq.com',
lowerCase: 'Asx',
upCase: 'AAA',
idCard: '341224199011232323'
}
},
computed: {
validEmail() {
return function (email) {
return this.$jpUtil.validEmail(email)
}
},
validMobile() {
return function (phone) {
return this.$jpUtil.validMobile(phone)
}
},
validURL() {
return function (url) {
return this.$jpUtil.validURL(url)
}
},
validLowerCase() {
return function (data) {
return this.$jpUtil.validLowerCase(data)
}
},
validUpperCase() {
return function (data) {
return this.$jpUtil.validUpperCase(data)
}
},
validateIDcard() {
return function (data) {
return this.$jpUtil.validateIDcard(data)
}
}
}
}
</script>
<style scoped>
@import url('./common.css');
</style>
显示代码
# 常用数组方法
是不是数组类型
""
false
[]
true
去除数组中空值
[1, 2, 3, null, '', undefined]
[
1,
2,
3
]
[{title: '111'}, {}]
[
{
"title": "111"
}
]
uniqueArr
[1,1,2, 2, 3, null, '', undefined]
[
1,
2,
3
]
[{ title: '111' }, { title: '111' }, {}]
[
{
"title": "111"
},
{
"title": "111"
}
]
对象数组的去重
[{ title: '111' }, { title: '111' }, {}]
[
{
"title": "111"
},
{}
]
<template>
<div>
<div class="title">是不是数组类型</div>
<div class="content">
<span class="pre">""</span>
{{ isArray('') }}
</div>
<div class="content">
<span class="pre">[]</span>
{{ isArray([]) }}
</div>
<div class="title">去除数组中空值</div>
<div class="content">
<span class="pre">[1, 2, 3, null, '', undefined]</span>
{{ cleanArray([1, 2, 3, null, '', undefined]) }}
</div>
<div class="content">
<span class="pre">[{title: '111'}, {}]</span>
{{ cleanArray([{ title: '111' }, {}]) }}
</div>
<div class="title">uniqueArr</div>
<div class="content">
<span class="pre">[1,1,2, 2, 3, null, '', undefined]</span>
{{ uniqueArr([1, 2, 3, null, '', undefined]) }}
</div>
<div class="content">
<span class="pre">[{ title: '111' }, { title: '111' }, {}]</span>
{{ uniqueArr([{ title: '111' }, { title: '111' }, {}]) }}
</div>
<div class="title">对象数组的去重</div>
<div class="content">
<span class="pre">[{ title: '111' }, { title: '111' }, {}]</span>
{{ uniqueObjArr([{ title: '111' }, { title: '111' }, {}], 'title') }}
</div>
</div>
</template>
<script>
export default {
mounted() {},
computed: {
isArray() {
return function (data) {
return this.$jpUtil.isArray(data)
}
},
cleanArray() {
return function (data) {
return this.$jpUtil.cleanArray(data)
}
},
uniqueArr() {
return function (data) {
return this.$jpUtil.cleanArray(data)
}
},
uniqueObjArr() {
return function (data, key) {
return this.$jpUtil.uniqueObjArr(data, key)
}
}
}
}
</script>
<style scoped>
@import url('./common.css');
</style>
显示代码
# 其他
去除空格
1 2 3 4 4
12344
获取随机数
10~20之间的随机数
10
uuid
获取uuid
a978acec-fa6e-4672-c6b6-f810f297a542
是不是String类型
null
false
""
true
<template>
<div>
<div class="title">去除空格</div>
<div class="content">
<span class="pre">1 2 3 4 4</span>
{{ trim }}
</div>
<div class="title">获取随机数</div>
<div class="content">
<span class="pre">10~20之间的随机数</span>
{{ random(10, 20) }}
</div>
<div class="title">uuid</div>
<div class="content">
<span class="pre">获取uuid</span>
{{ uuid }}
</div>
<div class="title">是不是String类型</div>
<div class="content">
<span class="pre">null</span>
{{ isString(null) }}
</div>
<div class="content">
<span class="pre">""</span>
{{ isString('') }}
</div>
</div>
</template>
<script>
export default {
mounted() {},
computed: {
trim() {
return this.$jpUtil.trim('1 2 3 4 4')
},
random() {
return function (min, max) {
return this.$jpUtil.random(min, max)
}
},
uuid() {
return this.$jpUtil.uuid()
},
isString() {
return function (str) {
return this.$jpUtil.isString(str)
}
}
}
}
</script>
<style scoped>
@import url('./common.css');
</style>
显示代码
← DateUtil