JS常用方法汇总(持续更新)

109 阅读1分钟

1. 身份证号加密

/**
 * idNumber: string 身份证号
 */
function encryptIDNO(idNumber) {
    return idNumber.replace(/^(.{4})(?:\d+)(.{4})$/, "$1*********$2")
}

2. 从身份证号中获取性别

/**
 * idNumber: string 身份证号
 */
function getSexByIDNO(idNumber) {
  if (parseInt(idNumber.substr(16, 1)) % 2 == 1) {
    return "男";
  } else {
    return "女";
  }
}

3. 从身份证号中获取年龄

/**
 * idNumber: 身份证号
 */
function getAgeByIDNO(idNumber) {
  var len = (idNumber + "").length;
  if (len == 0) {
    return "";
  } else {
    if (len != 15 && len != 18) {
      // 身份证号码只能为15位或18位其它不合法(第一代身份证为15位)
      return "";
    }
  }
  var strBirthday = "";
  if (len == 18) {
    // 处理18位的身份证号码从号码中得到生日和性别代码
    strBirthday =
      idNumber.substr(6, 4) +
      "/" +
      idNumber.substr(10, 2) +
      "/" +
      idNumber.substr(12, 2);
  }
  if (len == 15) {
    strBirthday =
      "19" +
      idNumber.substr(6, 2) +
      "/" +
      idNumber.substr(8, 2) +
      "/" +
      idNumber.substr(10, 2);
  }
  //时间字符串里,必须是“/”
  var birthDate = new Date(strBirthday);
  var nowDateTime = new Date();
  var age = nowDateTime.getFullYear() - birthDate.getFullYear();
  //再考虑月、天的因素;.getMonth()获取的是从0开始的,这里进行比较,不需要加1
  if (
    nowDateTime.getMonth() < birthDate.getMonth() ||
    (nowDateTime.getMonth() == birthDate.getMonth() &&
      nowDateTime.getDate() < birthDate.getDate())
  ) {
    age--;
  }
  return age;
}

4. 获取日期

/**
 * 如果传入日期,则返回传入日期对应的信息,否则返回当天的
 * date: any 日期
 */
function getDate(date) {
  let _date
  if (date) {
    _date = new Date(date)
  } else {
    _date = new Date()
  }
  let year = _date.getFullYear()
  let month: number | string = _date.getMonth() + 1
  month = month < 10 ? '0' + month : month
  let day: string | number = _date.getDate()
  day = day < 10 ? '0' + day : day
  let hour = _date.getHours()
  let minutes = _date.getMinutes()
  let seconds = _date.getSeconds()
  return [year, month, day, hour, minutes, seconds]
}