站三界导航
首页 JS代码实用的js封装方法

实用的js封装方法

  • JS代码
  • 来源:站三界导航
  • 188阅读
  • 2022-05-09

以下这些是项目中用到的,封装的方法,如果有问题虚心求教。

截取url参数


function getQueryObject(url) {
  url = url == null ? window.location.href : url
  const search = url.substring(url.lastIndexOf('?') + 1)
  const obj = {}
  const reg = /([^?&=]+)=([^?&=]*)/g
  search.replace(reg, (rs, $1, $2) => {
    const name = decodeURIComponent($1)
    let val = decodeURIComponent($2)
    val = String(val)
    obj[name] = val
    return rs
  })
  return obj
}
getQueryObject('https//www.zhansanjie.com?id=1111&type=edit')

格式化时间(方法1)




function parseTime(time, cFormat) {
  if (arguments.length === 0) {
    return null
  }
  const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
  let date
  if (typeof time === 'object') {
    date = time
  } else {
    if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
      time = parseInt(time)
    }
    if ((typeof time === 'number') && (time.toString().length === 10)) {
      time = time * 1000
    }
    date = new Date(time)
  }
  const formatObj = {
    y: date.getFullYear(),
    m: date.getMonth() + 1,
    d: date.getDate(),
    h: date.getHours(),
    i: date.getMinutes(),
    s: date.getSeconds(),
    a: date.getDay()
  }
  const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
    let value = formatObj[key]
    // Note: getDay() returns 0 on Sunday
    if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }
    if (result.length > 0 && value < 10) {
      value = '0' + value
    }
    return value || 0
  })
  return time_str
}
// 使用
parseTime(new Date(),'{y}-{m}-{d} {h}:{i}:{s}')

格式化时间(方法2)




/**
 * 格式化时间
 */
function NewTime(time) {
  if (!time) time = new Date()
  const t = new Date(time) // 你已知的时间
  t.setTime(t.setMinutes(t.getMinutes())) // 设置新时间比旧时间多一分钟
  const Y = t.getFullYear()
  let M = t.getMonth() + 1
  let D = t.getDate()
  let HH = t.getHours()
  let MM = t.getMinutes()
  let SS = t.getSeconds()
  if (M < 10) M = '0' + M
  if (D < 10) D = '0' + D
  if (HH < 10) HH = '0' + HH
  if (MM < 10) MM = '0' + MM
  if (SS < 10) SS = '0' + SS
  // let date_value = Y + '-' + M + '-' + D + ' ' + HH + ':' + MM + ':' + SS;
  const date_value = Y + '-' + M + '-' + D + ' ' + HH + ':' + MM + ':' + SS
  return date_value
}

存储、获取、删除 sessionStorage




function __setItem(name, content) {
  if (!name) return;
  if (typeof content !== 'string') {
    content = JSON.stringify(content);
  }
  window.sessionStorage.setItem(name, content);
};

function __getItem(name) {
  if (!name) return;
  return window.sessionStorage.getItem(name);
};


function __removeItem(name) {
  if (!name) return;
  window.sessionStorage.removeItem(name);
};

检测手机号




function _isMobile(mobile) {
  var reg = /^[1][3,4,5,7,8][0-9]{9}$/;
  if (reg.test(mobile)) return true;
  else return false;
};

将base64转换为文件




function dataURLtoFile(dataurl, filename) {
  var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
    bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n);
  }
  return new File([u8arr], filename, { type: mime });
}

替换电话号码中间四位




function replacePhone(num) {
  let mphone = num;
  if (_isMobile(num)) {
    mphone = num.substr(0, 3) + '****' + num.substr(7);
  }
  return mphone;
};

去除内容中的空格




function deblank(str) {
  str = str.replace(/\s*/g, '');
  return str;
};

电话号码格式344替换



function phoneSeparated(num) {
  let mphone = num;
  if (_isMobile(num)) {
    mphone =
      num.substring(0, 3) +
      ' ' +
      num.substring(3, 7) +
      ' ' +
      num.substring(7, 11);
  }
  return mphone;
};

银行卡格式4444替换


function cardSeparated(num) {
  let index = num ? num.length / 4 : 0;
  let result = '';
  for (let i = 0; i < index; i++) {
    result += num.substring(i * 4, (i + 1) * 4) + ' ';
  }
  return result;
};

身份证格式生日替换


function identityCardSeparated(num) {
  if (num.length === 18) {
    var str = num.substr(0, 6) + '********' + num.substr(14);
    return str;
  } else {
    return num;
  }
};

护照号替换


function passportSeparated(num) {
  if (num.length > 4) {
    var str = num.substr(0, num.length - 4) + '****';
    return str;
  } else {
    return num;
  }
};

卡号每隔四位加短线


function cardNoFormat(cardNo) {
  if (typeof cardNo == 'number') {
    cardNo = String(cardNo).replace(/\D/g, '').replace(/....(?!$)/g, '$&-');
  } else {
    cardNo = cardNo.replace(/\D/g, '').replace(/....(?!$)/g, '$&-');
  }
  return cardNo;
};
console.log(cardNoFormat('124141251512'))
console.log(cardNoFormat(1233124124124124))

每隔四位加空格


function fourSpace(num) {
  var value = num
    .replace(/\D/g, '')
    .replace(/....(?!$)/g, '$& ');
  return value;
};
fourSpace('13122223333')

身份证校验


function IdentityCodeValid(code) {
  let city = {
    11: '北京',
    12: '天津',
    13: '河北',
    14: '山西',
    15: '内蒙古',
    21: '辽宁',
    22: '吉林',
    23: '黑龙江',
    31: '上海',
    32: '江苏',
    33: '浙江',
    34: '安徽',
    35: '福建',
    36: '江西',
    37: '山东',
    41: '河南',
    42: '湖北 ',
    43: '湖南',
    44: '广东',
    45: '广西',
    46: '海南',
    50: '重庆',
    51: '四川',
    52: '贵州',
    53: '云南',
    54: '西藏 ',
    61: '陕西',
    62: '甘肃',
    63: '青海',
    64: '宁夏',
    65: '新疆',
    71: '台湾',
    81: '香港',
    82: '澳门',
    91: '国外'
  };
  let tip = '';
  let pass = true;
  if (!code || !/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(code)) {
    tip = '身份证号格式错误';
    pass = false;
  } else if (!city[code.substr(0, 2)]) {
    tip = '地址编码错误';
    pass = false;
  }
  if (!pass) message.error(tip);
  return pass;
};

HmacSHA256加密


function encryptHmacSHA256(value) {
  const userInfo = getUserInfo();
  let key = '';
  if (userInfo.data) {
    key = userInfo.data.publicKey;
  }
  let ciphertext = CryptoJS.HmacSHA256(value, key);
  let hashInBase64 = CryptoJS.enc.Base64.stringify(ciphertext);
  return hashInBase64;
};

对象中的null转为空字符串


function _replaceNull(obj) {
  if (typeof obj === 'object') {
    Object.keys(obj).forEach(element => {
      let value = obj[element];
      if (value === null || value === undefined) {
        // obj[element] = '';
        delete obj[element];
      } else if (typeof value === 'object') {
        _replaceNull(value);
      }
    });
  }
  return obj;
};

文件导出


function _checkoutFile(fileName, response) {
  console.log('response');
  console.log(response);
  let blob = new Blob([response], { type: 'application/vnd.ms-excel' });
  let objectUrl = URL.createObjectURL(blob);
  const a = document.createElement('a');
  a.setAttribute('href', objectUrl);
  a.setAttribute('download', fileName);
  a.click();
  URL.revokeObjectURL(objectUrl);
};

url文件导出


function _urlExportFile(url) {
  const a = document.createElement('a');
  a.setAttribute('href', url);
  a.click();
};

url校验


function validateURL(url, list) {
  let i = 0;
  if (list) {
    list.forEach(el => {
      if (url === el) {
        i = 1;
      }
    });
  }
  if (i !== 0) return false;
  if (i === 0) return true;
};

页面可视高度、 页面可视宽度


function clientHeight() {
  let clientHeight = document.getElementById('root').clientHeight;
  let offsetHeight = document.getElementById('root').offsetHeight;
  return clientHeight || offsetHeight;
};

function clientWidth() {
  let clientWidth = document.getElementById('root').clientWidth;
  let offsetWidth = document.getElementById('root').offsetWidth;
  return clientWidth || offsetWidth;
};

格式化金额


function formatMoney(val) {
  var valStr = String(Number(val).toFixed());
  var prefix_val, suffix_val, prefix_result, prefix_arr = null;
  var j, t, i = 0;
  let negativeFlag = false; //负数
  if (isNaN(Number(valStr))) {
    return val
  }
  if(Number(valStr) < 0){
    negativeFlag = true;
    valStr = String(Math.abs(valStr))
  }
  if (valStr.length < 3) {
    valStr = prefix(valStr, 3)
  }
  prefix_val = valStr.slice(0, -2)
  suffix_val = valStr.slice(-2)
  prefix_result = []
  prefix_arr = prefix_val.split("")
  j = 0
  t = 3
  for (i = prefix_arr.length - 1; i >= 0; i--) {
    j++
    if (j === t || i === 0) {
      prefix_result.unshift(prefix_arr.splice(i).join(""))
      j = 0
    }
  }
  if(negativeFlag){
    return '-' + prefix_result.join(",") + "." + suffix_val
  }else{
    return prefix_result.join(",") + "." + suffix_val
  }
}
formatMoney(1111111)


本文结束
本文来自投稿,不代表站三界导航立场,如若转载,请注明出处:https://www.zhansanjie.com/article/details/8389.html

版权声明:

1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

2、本站仅提供信息发布平台,不承担相关法律责任。

3、若侵犯您的版权或隐私,请联系本站管理员删除。

4、本文由会员转载自互联网,如果您是文章原创作者,请联系本站注明您的版权信息。

分享
相关文章 更多 >>
随机网站 更多 >>
最新小程序 更多>>
最新公众号更多>>
站三界导航
本站声明:本站严格遵守国家相关法律规定,非正规网站一概不予收录。本站所有资料取之于互联网,任何公司或个人参考使用本资料请自辨真伪、后果自负,站三界导航不承担任何责任。在此特别感谢您对站三界导航的支持与厚爱。