前端开发常用的方法封装(二)

简介: 将阿拉伯数字翻译成中文的大写数字、将数字转换为大写金额、 判断一个元素是否在数组中和数组排序等......

2000元阿里云代金券免费领取,2核4G云服务器仅664元/3年,新老用户都有优惠,立即抢购>>>


阿里云采购季(云主机223元/3年)活动入口:请点击进入>>>,


阿里云学生服务器(9.5元/月)购买入口:请点击进入>>>,

1.将阿拉伯数字翻译成中文的大写数字

export const numberToChinese = (num) => {
   
  let AA = new Array(
    "零",
    "一",
    "二",
    "三",
    "四",
    "五",
    "六",
    "七",
    "八",
    "九",
    "十"
  );
  let BB = new Array("", "十", "百", "仟", "萬", "億", "点", "");
  let a = ("" + num).replace(/(^0*)/g, "").split("."),
    k = 0,
    re = "";
  for (let i = a[0].length - 1; i >= 0; i--) {
   
    switch (k) {
   
      case 0:
        re = BB[7] + re;
        break;
      case 4:
        if (!new RegExp("0{4}//d{" + (a[0].length - i - 1) + "}$").test(a[0]))
          re = BB[4] + re;
        break;
      case 8:
        re = BB[5] + re;
        BB[7] = BB[5];
        k = 0;
        break;
    }
    if (k % 4 == 2 && a[0].charAt(i + 2) != 0 && a[0].charAt(i + 1) == 0)
      re = AA[0] + re;
    if (a[0].charAt(i) != 0) re = AA[a[0].charAt(i)] + BB[k % 4] + re;
    k++;
  }

  if (a.length > 1) {
   
    // 加上小数部分(如果有小数部分)
    re += BB[6];
    for (let i = 0; i < a[1].length; i++) re += AA[a[1].charAt(i)];
  }
  if (re == "一十") re = "十";
  if (re.match(/^一/) && re.length == 3) re = re.replace("一", "");
  return re;
};

2.将数字转换为大写金额

export const changeToChinese = (Num) => {
   
  //判断如果传递进来的不是字符的话转换为字符
  if (typeof Num == "number") {
   
    Num = new String(Num);
  }
  Num = Num.replace(/,/g, ""); //替换tomoney()中的“,”
  Num = Num.replace(/ /g, ""); //替换tomoney()中的空格
  Num = Num.replace(/¥/g, ""); //替换掉可能出现的¥字符
  if (isNaN(Num)) {
   
    //验证输入的字符是否为数字
    //alert("请检查小写金额是否正确");
    return "";
  }
  //字符处理完毕后开始转换,采用前后两部分分别转换
  let part = String(Num).split(".");
  let newchar = "";
  //小数点前进行转化
  for (let i = part[0].length - 1; i >= 0; i--) {
   
    if (part[0].length > 10) {
   
      return "";
      //若数量超过拾亿单位,提示
    }
    let tmpnewchar = "";
    let perchar = part[0].charAt(i);
    switch (perchar) {
   
      case "0":
        tmpnewchar = "零" + tmpnewchar;
        break;
      case "1":
        tmpnewchar = "壹" + tmpnewchar;
        break;
      case "2":
        tmpnewchar = "贰" + tmpnewchar;
        break;
      case "3":
        tmpnewchar = "叁" + tmpnewchar;
        break;
      case "4":
        tmpnewchar = "肆" + tmpnewchar;
        break;
      case "5":
        tmpnewchar = "伍" + tmpnewchar;
        break;
      case "6":
        tmpnewchar = "陆" + tmpnewchar;
        break;
      case "7":
        tmpnewchar = "柒" + tmpnewchar;
        break;
      case "8":
        tmpnewchar = "捌" + tmpnewchar;
        break;
      case "9":
        tmpnewchar = "玖" + tmpnewchar;
        break;
    }
    switch (part[0].length - i - 1) {
   
      case 0:
        tmpnewchar = tmpnewchar + "元";
        break;
      case 1:
        if (perchar != 0) tmpnewchar = tmpnewchar + "拾";
        break;
      case 2:
        if (perchar != 0) tmpnewchar = tmpnewchar + "佰";
        break;
      case 3:
        if (perchar != 0) tmpnewchar = tmpnewchar + "仟";
        break;
      case 4:
        tmpnewchar = tmpnewchar + "万";
        break;
      case 5:
        if (perchar != 0) tmpnewchar = tmpnewchar + "拾";
        break;
      case 6:
        if (perchar != 0) tmpnewchar = tmpnewchar + "佰";
        break;
      case 7:
        if (perchar != 0) tmpnewchar = tmpnewchar + "仟";
        break;
      case 8:
        tmpnewchar = tmpnewchar + "亿";
        break;
      case 9:
        tmpnewchar = tmpnewchar + "拾";
        break;
    }
    let newchar = tmpnewchar + newchar;
  }
  //小数点之后进行转化
  if (Num.indexOf(".") != -1) {
   
    if (part[1].length > 2) {
   
      // alert("小数点之后只能保留两位,系统将自动截断");
      part[1] = part[1].substr(0, 2);
    }
    for (i = 0; i < part[1].length; i++) {
   
      tmpnewchar = "";
      perchar = part[1].charAt(i);
      switch (perchar) {
   
        case "0":
          tmpnewchar = "零" + tmpnewchar;
          break;
        case "1":
          tmpnewchar = "壹" + tmpnewchar;
          break;
        case "2":
          tmpnewchar = "贰" + tmpnewchar;
          break;
        case "3":
          tmpnewchar = "叁" + tmpnewchar;
          break;
        case "4":
          tmpnewchar = "肆" + tmpnewchar;
          break;
        case "5":
          tmpnewchar = "伍" + tmpnewchar;
          break;
        case "6":
          tmpnewchar = "陆" + tmpnewchar;
          break;
        case "7":
          tmpnewchar = "柒" + tmpnewchar;
          break;
        case "8":
          tmpnewchar = "捌" + tmpnewchar;
          break;
        case "9":
          tmpnewchar = "玖" + tmpnewchar;
          break;
      }
      if (i == 0) tmpnewchar = tmpnewchar + "角";
      if (i == 1) tmpnewchar = tmpnewchar + "分";
      newchar = newchar + tmpnewchar;
    }
  }
  //替换所有无用汉字
  while (newchar.search("零零") != -1) newchar = newchar.replace("零零", "零");
  newchar = newchar.replace("零亿", "亿");
  newchar = newchar.replace("亿万", "亿");
  newchar = newchar.replace("零万", "万");
  newchar = newchar.replace("零元", "元");
  newchar = newchar.replace("零角", "");
  newchar = newchar.replace("零分", "");
  if (newchar.charAt(newchar.length - 1) == "元") {
   
    newchar = newchar + "整";
  }
  return newchar;
};

3. 判断一个元素是否在数组中和数组排序

export const contains = (arr, val) => {
   
  return arr.indexOf(val) != -1 ? true : false;
};
// 数组排序
// {type} 1:从小到大 2:从大到小 3:随机
export const sort = (arr, type = 1) => {
   
  return arr.sort((a, b) => {
   
    switch (type) {
   
      case 1:
        return a - b;
      case 2:
        return b - a;
      case 3:
        return Math.random() - 0.5;
      default:
        return arr;
    }
  });
};

4.数组去重

export const unique = (arr) => {
   
  if (Array.hasOwnProperty("from")) {
   
    return Array.from(new Set(arr));
  } else {
   
    let n = {
   },
      r = [];
    for (let i = 0; i < arr.length; i++) {
   
      if (!n[arr[i]]) {
   
        n[arr[i]] = true;
        r.push(arr[i]);
      }
    }
    return r;
  }
};

5.求两个集合的并集和求两个集合的交集


// 求两个集合的并集
export const union = (a, b) => {
   
  let newArr = a.concat(b);
  return this.unique(newArr);
};

// 求两个集合的交集
export const intersect = (a, b) => {
   
  let _this = this;
  a = this.unique(a);
  return this.map(a, function (o) {
   
    return _this.contains(b, o) ? o : null;
  });
};

6.删除其中一个元素、将类数组转换为数组、最大值、最小值、求和、平均值

// 删除其中一个元素
export const remove = (arr, ele) => {
   
  let index = arr.indexOf(ele);
  if (index > -1) {
   
    arr.splice(index, 1);
  }
  return arr;
};
// 将类数组转换为数组
export const formArray = (ary) => {
   
  let arr = [];
  if (Array.isArray(ary)) {
   
    arr = ary;
  } else {
   
    arr = Array.prototype.slice.call(ary);
  }
  return arr;
};
// 最大值
export const max = (arr) => {
   
  return Math.max.apply(null, arr);
};
// 最小值
export const min = (arr) => {
   
  return Math.min.apply(null, arr);
};
//求和
export const sum = (arr) => {
   
  return arr.reduce((pre, cur) => {
   
    return pre + cur;
  });
};
//平均值
export const average = (arr) => {
   
  return this.sum(arr) / arr.length;
};

7.去除空格

// type: 1-所有空格 2-前后空格 3-前空格 4-后空格
export const trim = (str, type) => {
   
  type = type || 1;
  switch (type) {
   
    case 1:
      return str.replace(/\s+/g, "");
    case 2:
      return str.replace(/(^\s*)|(\s*$)/g, "");
    case 3:
      return str.replace(/(^\s*)/g, "");
    case 4:
      return str.replace(/(\s*$)/g, "");
    default:
      return str;
  }
};

8.字符替换

// type: 1:首字母大写 2:首字母小写 3:大小写转换 4:全部大写 5:全部小写
export const changeCase = (str, type) => {
   
  type = type || 4;
  switch (type) {
   
    case 1:
      return str.replace(/\b\w+\b/g, function (word) {
   
        return (
          word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase()
        );
      });
    case 2:
      return str.replace(/\b\w+\b/g, function (word) {
   
        return (
          word.substring(0, 1).toLowerCase() + word.substring(1).toUpperCase()
        );
      });
    case 3:
      return str
        .split("")
        .map(function (word) {
   
          if (/[a-z]/.test(word)) {
   
            return word.toUpperCase();
          } else {
   
            return word.toLowerCase();
          }
        })
        .join("");
    case 4:
      return str.toUpperCase();
    case 5:
      return str.toLowerCase();
    default:
      return str;
  }
};

9.检测密码强度

export const checkPwd = (str) => {
   
  let Lv = 0;
  if (str.length < 6) {
   
    return Lv;
  }
  if (/[0-9]/.test(str)) {
   
    Lv++;
  }
  if (/[a-z]/.test(str)) {
   
    Lv++;
  }
  if (/[A-Z]/.test(str)) {
   
    Lv++;
  }
  if (/[\.|-|_]/.test(str)) {
   
    Lv++;
  }
  return Lv;
};

10. 函数节流器

export const debouncer = (fn, time, interval = 200) => {
   
  if (time - (window.debounceTimestamp || 0) > interval) {
   
    fn && fn();
    window.debounceTimestamp = time;
  }
};

11.在字符串中插入新字符串

export const insertStr = (soure, index, newStr) => {
   
  let str = soure.slice(0, index) + newStr + soure.slice(index);
  return str;
};

12.判断两个对象是否键值相同

export const isObjectEqual = (a, b) => {
   
  let aProps = Object.getOwnPropertyNames(a);
  let bProps = Object.getOwnPropertyNames(b);

  if (aProps.length !== bProps.length) {
   
    return false;
  }

  for (let i = 0; i < aProps.length; i++) {
   
    let propName = aProps[i];

    if (a[propName] !== b[propName]) {
   
      return false;
    }
  }
  return true;
};

13.16进制颜色转RGBRGBA字符串

export const colorToRGB = (val, opa) => {
   
  let pattern = /^(#?)[a-fA-F0-9]{6}$/; //16进制颜色值校验规则
  let isOpa = typeof opa == "number"; //判断是否有设置不透明度

  if (!pattern.test(val)) {
   
    //如果值不符合规则返回空字符
    return "";
  }

  let v = val.replace(/#/, ""); //如果有#号先去除#号
  let rgbArr = [];
  let rgbStr = "";

  for (let i = 0; i < 3; i++) {
   
    let item = v.substring(i * 2, i * 2 + 2);
    let num = parseInt(item, 16);
    rgbArr.push(num);
  }

  rgbStr = rgbArr.join();
  rgbStr =
    "rgb" + (isOpa ? "a" : "") + "(" + rgbStr + (isOpa ? "," + opa : "") + ")";
  return rgbStr;
};

14.追加url参数

export const appendQuery = (url, key, value) => {
   
  let options = key;
  if (typeof options == "string") {
   
    options = {
   };
    options[key] = value;
  }
  options = $.param(options);
  if (url.includes("?")) {
   
    url += "&" + options;
  } else {
   
    url += "?" + options;
  }
  return url;
};
目录
相关文章
|
5天前
|
前端开发
前端通过input标签封装Upload组件实现文件上传
前端通过input标签封装Upload组件实现文件上传
79 0
|
5天前
|
前端开发
前端接受后端文件流并下载到本地的方法
前端接受后端文件流并下载到本地的方法
76 0
|
5天前
|
前端开发 BI
jeecgboot中前端使用带有参数报表的方法
jeecgboot中前端使用带有参数报表的方法
17 0
|
2天前
|
前端开发 JavaScript
前端 JS 经典:Math 常用方法汇总
前端 JS 经典:Math 常用方法汇总
6 0
|
2天前
|
前端开发 JavaScript
前端 js 经典:Object 常用原生方法
前端 js 经典:Object 常用原生方法
10 2
|
2天前
|
前端开发 JavaScript
前端 js 经典:array 原生方法
前端 js 经典:array 原生方法
7 1
|
5天前
|
前端开发 JavaScript 开发者
实用技巧:提高前端开发效率的5个方法
提高前端开发效率是每个开发者都追求的目标。本文将介绍5个实用的技巧,帮助前端开发者提升工作效率:使用代码片段加速开发、合理利用浏览器开发者工具、充分利用现有框架和库、使用自动化构建工具、保持学习和不断优化工作流程。
|
5天前
|
前端开发 JavaScript 开发者
【Web 前端】数组迭代的方法有哪些?
【4月更文挑战第22天】【Web 前端】数组迭代的方法有哪些?
|
5天前
|
前端开发
【Web 前端】对于数组去重都有哪些方法?
【4月更文挑战第22天】【Web 前端】对于数组去重都有哪些方法?
|
5天前
|
前端开发 JavaScript
【Web 前端】JS继承的方法有哪些?
【4月更文挑战第22天】【Web 前端】JS继承的方法有哪些?
http://www.vxiaotou.com