【常用公共方法】PC端和移动端均可用(一)
2019-05-29 本文已影响0人
北极星丶超帅的
判断是否为json
export const isJSON = (str) => {
if (typeof str === 'string') {
try {
let obj = JSON.parse(str)
if (typeof obj === 'object' && obj) {
console.log('右侧list是JSON')
return obj
}
return str
} catch (e) {
return str
}
} else {
return str
}
}
中国标准时间转换为yyyy-MM-dd
export const getDateYMd = (tm) => {
let d = new Date(tm)
let datetime = d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate()
return datetime
}
中国标准时间转换为字符串2018-09-06 18:14:32.0
export const isDateString = (time) => {
let date = new Date(time)
let year = date.getFullYear()
/* 在日期格式中,月份是从0开始的,因此要加0
* 使用三元表达式在小于10的前面加0,以达到格式统一 如 09:11:05
* */
let month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
let day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
let hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
let minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
let seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
// 拼接
return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds
}
将时间转换成时间戳
export const getDate = (tm) => {
let timestamp = Date.parse(new Date(tm)) / 1000
return timestamp
}
时间戳格式化
export const formatTime = (date) => {
let hours = date.getHours()
let minutes = date.getMinutes()
if (hours < 10) {
hours = '0' + hours
}
if (minutes < 10) {
minutes = '0' + minutes
}
return hours + ':' + minutes
}
时间戳转换为时间格式
//第一种
export const formatTimestamp = (time = +new Date()) => {
let parseNumber = Number(time)
if (time && isNumber(parseNumber)) {
time = Number(time)
let date = new Date(time + 8 * 3600 * 1000)
return date.toJSON().substr(0, 19).replace('T', ' ').replace(/-/g, '.')
} else {
return time
}
}
//第二种
export const getLocalTime = (nS) => {
return new Date(parseInt(nS) * 1000).toLocaleString('chinese', {
hour12: false
}).replace(/\//g, '-')
}
判断是否是纯数字
export const isIntNumber = (val) => {
let reg = /^[1-9]\d*$|^0$/
let formal = String(val).match(reg)
return formal
}
判断是否是纯数字并且有小数点
export const isFloatNumber = (val) => {
let reg = /^([1-9][0-9]*|0)(\.[0-9]+)?$/
let formal = String(val).match(reg)
return formal
}
判断参数是否为非数字类型
export const isNumber = (val) => {
var regu = '^[ ]+$'
var re = new RegExp(regu)
if (re.test(val) || val === '' || val == null) return false
else return !isNaN(val)
}
判断是否不是空值
export const isEmpty = (value) => {
if (value === null || value === '' || value === 'undefined' || value === undefined || value === 'null') {
return false
} else {
value = value !== 0 ? JSON.parse(JSON.stringify(value).replace(/\s+/g, '')) : value
if (value === '') {
return false
}
return true
}
}
找到数组options的值
export const findVal = (options, val) => {
let item = options.find(item => String(item.value) === String(val))
return item ? item.label : '-'
}
数组是否包含另一个数组,只适用【1,2,3】
export const includes = (arr1, arr2) => {
return arr2.every(val => arr1.includes(val));
}
获取 指定链接参数的值
export const GetQueryString = (name) => {
let reg, r
reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)')
r = window.location.search.substr(1).match(reg)
if (r != null) return unescape(r[2])
return null
}
获取后缀名
export const suffix = (file) => {
let Suffix = file.substring(0, file.lastIndexOf('.'))
return Suffix
}
校验是否是有效的手机号
export const validatePhone = (val) => {
return /^\d{11}$/.test(val)
}
判断邮箱格式
export const isEmail = (val) => {
let reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/
let formal = reg.test(val)
return formal
}
上传文件大小
export const fileSize = (size) => {
const KB = 1024
const MB = KB * 1024
const GB = MB * 1024
let value
if (size >= GB) {
value = (size / MB).toFixed(2) + 'GB'
} else if (size >= MB) {
value = (size / MB).toFixed(2) + 'MB'
} else if (size >= KB) {
value = (size / MB).toFixed(2) + 'KB'
} else {
value = size.toFixed(2) + 'B'
}
return value
}
加减乘除计算公式
// 相乘 fixed代表几位小数点,如2,3等
export const accMult = (arg1, arg2, fixed) => {
let val1 = (arg1 === 'NaN' || !arg1) ? 0 : arg1
let val2 = (arg2 === 'NaN' || !arg2) ? 0 : arg2
let num = (!fixed || fixed < 3) ? 100 : Math.pow(10, fixed)
// console.log('相乘', val1, val2)
return (parseInt((val1 * num) * (val2 * num)) / num / num).toFixed(fixed)
}
// 相除 fixed代表几位小数点,如2,3等
export const accDivide = (arg1, arg2, fixed) => {
let val1 = (arg1 === 'NaN' || !arg1) ? 0 : arg1
let val2 = (arg2 === 'NaN' || !arg2) ? 0 : arg2
if (val1 === '0.00' || val1 === 0 || val1 === '0') return 0
if (val2 === '0.00' || val2 === 0 || val2 === '0') return 0
let num = (!fixed || fixed < 3) ? 100 : Math.pow(10, fixed)
// console.log('相除', val1, val2)
return (parseInt((val1 / val2) * num) / num).toFixed(fixed)
}
// 相加 fixed代表几位小数点,如2,3等
export const accAdd = (arg1, arg2, fixed) => {
let val1 = (arg1 === 'NaN' || !arg1) ? 0 : arg1
let val2 = (arg2 === 'NaN' || !arg2) ? 0 : arg2
let num = (!fixed || fixed < 3) ? 100 : Math.pow(10, fixed)
// console.log('相加', val1, val2)
return ((parseInt(val1 * num) + parseInt(val2 * num)) / num).toFixed(fixed)
}
// 相减 fixed代表几位小数点,如2,3等
export const accReduce = (arg1, arg2, fixed) => {
let val1 = (arg1 === 'NaN' || !arg1) ? 0 : arg1
let val2 = (arg2 === 'NaN' || !arg2) ? 0 : arg2
let num = (!fixed || fixed < 3) ? 100 : Math.pow(10, fixed)
// console.log('相减', val1, val2)
return ((parseInt(val1 * num) - parseInt(val2 * num)) / num).toFixed(fixed)
}
判断