js中常见方法

86 阅读2分钟

整理一部分常用js的方法,方便后续查找使用

  1. 金额转化中文大写;
  2. 日期格式化;
  3. 日期转数字;
  4. xxs转义和xss反转义;
  5. 码值转中文

金额转化中文大写

function changeMoneyToChinese(money) {
  let cnN = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"];
  let cnIntR = ["", "拾", "佰", "仟"];
  let cnIntU = ["", "万", "亿", "兆", "千兆"];
  let cnDecU = ["角", "分", "厘", "毫"];
  let cnIntL = "";
  let maxNum = toBigNum("9999999999999999.9999");
  function toBigNum(value) {
    if (typeof value == "string") {
      value = value.trim();
    }
    return new Bignumber(value);
  }
  let intNum;
  let decNum;
  let cnStr = "";
  //整数转化
  function intToCnStr(intNum) {
    let zeroCount = 0;
    let intLen = intNum.length;
    for (let i = 0; i < intLen; i++) {
      let n = intNum.substr(i, 1);
      let m = intLen - i - 1;
      let p = m / 4;
      let q = m % 4;
      if (n === "0") {
        zeroCount++;
      } else {
        if (zeroCount > 0) {
          cnStr += cnN[0];
        }
        zeroCount = 0;
        cnStr += cnN[parseInt(n)] + cnIntR[q];
      }
      if (q === 0 && zeroCount < 4) {
        cnStr += cnIntU[p];
      }
    }
    return (cnStr += cnIntL);
  }
  //获取小数部分转化
  function decToStr(decNum) {
    let decLen = decNum.length;
    for (let i = 0; i < decLen; i++) {
      let n = decNum.substr(i, 1);
      if (n !== "0") {
        cnStr += cnN[Number(n)] + cnDecU[i];
      }
    }
    return cnStr;
  }
  if (typeof money !== "string") {
    money = money + "";
  }
  if (money === "" || money.indexOf("-") === 0) {
    return "";
  }
  money = money.split(",").join("");
  if (typeof money == "string") {
    money = money.trim();
  }
  let moneyDec=toBigNum(money);
  //判断数字是否有效
  if(!moneyDec.isFinite()){
    return "";
  }
  if(moneyDec.isGreaterThanOrEqualTo(maxNum)){
    return "超出最大处理金额";
  }
  if(money===0){
    cnStr=cnN[0]+cnIntL;
    return cnStr;
  }
  money=money.toString();
  if(money.indexOf(".")===-1){
    intNum=money;
    decNum="";
  }else{
    let parts=money.split(".");
    intNum=parts[0];
    decNum=parts[1].substr(0,4);
  }
  if(parseInt(intNum,10)>0){
    cnStr=intToCnStr(intNum);
  }
  if(decNum!==""){
    cnStr=decToStr(decNum);
  }
  if(cnStr===""){
    cnStr+=cnN[0]+cnIntL;
  }
  return cnStr
}

日期格式化

function dateFormat(val, format) {
  let o = {
    "y+": val.getFullYear(),
    "M+": val.getMonth(),
    "d+": val.getDate(),
    "h+": val.getHours(),
    "m+": val.getMinutes(),
    "s+": val.getSeconds(),
    "q+": Math.floor((val.getMonth() + 3) / 3),
    "S+": val.getMilliseconds(),
  };
  for (let k in o) {
    if (new RegExp("(" + k + ")").test(fmt)) {
      if ("S+" === k) {
        fmt = fmt.replace(
          RegExp.$1,
          RegExp.$1.length === 1
            ? o[k]
            : ("000" + o[k]).substr(("" + o[k]).length)
        );
      }else{
        fmt = fmt.replace(
          RegExp.$1,
          RegExp.$1.length === 1
            ? o[k]
            : ("00" + o[k]).substr(("" + o[k]).length)
        );
      }
    }
  }
  return fmt;
}

日期转数字

function dateToNumber(date, format) {
  if (format === "d") {
    return date.replace(new RegExp("-", "gm"), "");
  } else if (format === "t") {
    return date.replace(new RegExp(":", "gm"), "");
  }
  return date;
}

xxs转义和xss反转义

function escapeHtml(str) {
  return str.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
}
function unEscapeHtml(str) {
  return str.replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">");
}

码值转中文

function getText(val, arr) {
  if ((!val && val !== 0) || !Array.isArray(arr) || typeof val !== "string") {
    return;
  }
  let valLen = val.toString().split(",");
  if (valLen.length) {
    let valLenList = [];
    for (let k = 0; k < valLen.length; k++) {
      arr.map((item) => {
        if (item.value === valLen[k]) {
          valLenList.push(item.label);
          return valLenList;
        }
      });
    }
    return valLenList;
  }
}

后续慢慢补充...