【常用公共方法】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)
}
判断

上一篇 下一篇

猜你喜欢

热点阅读