一些项目中用到的方法(正则、去重、时间转换and more)
正则表达式
1、验证IP
/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){3}$/
2、验证邮箱
/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
3、验证端口
/^([1-9]\d{0,4})$/
4、验证http开头的IP
/^(http|https):\/\/(((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){3})|([a-z0-9]+(\.{1}[a-z0-9]+)*(\.[a-z]+){1}))(:([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-5]{2}[0-3][0-5])){0,1}$/
5、验证输入值为字母数字下划线,且以字母开头
/^([a-zA-Z]+[A-Za-z0-9_]*[a-zA-Z0-9_]*)$/
6、检查是否包含中文
/[\u4E00-\u9FA5\uF900-\uFA2D]/
对象数组转换
1、数组去重
var arr = [1,2,3,4,1,2]
[...new Set(arr)] => [1,2,3,4]
2、获取数组的重复元素
function getRepeatItems(array) {
const repeatItem = [],
map = new Map()
array.forEach((item) => {
if (map.has(item) && !repeatItem.includes(item)) {
repeatItem.push(item)
}
if (!map.has(item)) {
map.set(item, item)
}
})
return map
}
getRepeatItems([1,2,3,4,1,2]) => [1,2]
3、去掉object中值为空的key
//注 isNil omit为lodash中的方法
function omitNilKey(obj){
const omitKeyArray = []
for (const key in obj) {
if (isNil(obj[key]) || obj[key] === '') {
omitKeyArray.push(key)
}
}
return omit(obj, omitKeyArray)
}
omitNilKey({label: '', value: 'xxxxxx', name: 1 }) => {value: "xxxxxx", name: 1}
3、将秒语义化
function convertSecondsToTotalTime(seconds) {
if (seconds > 0 && seconds < 1) {
return `${seconds.toFixed(2)}秒`
}
if (seconds === 0) {
return '暂无数据'
}
let second = parseInt(seconds, 10)
let minute = 0
let hour = 0
let result = ''
if (second > 60) {
minute = parseInt(second / 60, 10)
second = parseInt(second % 60, 10)
if (minute > 60) {
hour = parseInt(minute / 60, 10)
minute = parseInt(minute % 60, 10)
}
}
result += hour > 0 ? `${hour}小时` : ''
result += minute > 0 ? `${minute}分` : ''
result += second > 0 ? `${second}秒` : ''
return result
}
convertSecondsToTotalTime(6000) => 1小时40分
}
转载请注明出处哦!