CodeHelper CodeHelper
首页
JavaScript
PHP
Python
Git速查表 (opens new window)
博客 (opens new window)
首页
JavaScript
PHP
Python
Git速查表 (opens new window)
博客 (opens new window)
  • 开始

    • 使用
  • 函数方法

    • 字符串
    • 数字
      • 指定范围随机正整数
      • 保留几位小数(补0)
      • 格式化金额
    • 数组
    • 日期时间
    • 缓存
    • 深浅拷贝
    • 正则
    • md5
    • 其它
  • 梳理

    • 循环
  • 高级操作

    • 类型转换技巧
    • 防抖与节流
    • Promise实现
目录

数字

# 指定范围随机正整数

  • min >= 0 && max > 0 && max >= min
/**
 * 指定范围随机取数
 * min ≤ return ≤ max
 * */
function random(min, max) {
	if (min >= 0 && max > 0 && max >= min) {
		let gab = max - min + 1;
		return Math.floor(Math.random() * gab + min);
	} else {
		return 0;
	}
}

# 保留几位小数(补0)

/* 
 * 保留几位小数,不足补0
 * @param numberVal 数字
 * @param option 可选参数
 * option.prec 保留几位小数(默认2位)
 * option.rule 默认round; 可选 ceil 、 floor 、 round 、 string
 * option.ins0 默认true; 是否补0
 */
// export const numDecimal = (numberVal, option = {}) => {
function numDecimal (numberVal, option = {}) {
  let _option = {prec: 2, rule: "round", ins0: true}
  Object.assign(_option, option)
  let {prec, rule, ins0} = _option

  // Math.ceil()执行向上舍入,即它总是将数值向上舍入为最接近的整数;
  // Math.floor()执行向下舍入,即(不四舍五入)它总是将数值向下舍入为最接近的整数;
  // Math.round()执行标准舍入,即它总是将数值四舍五入为最接近的整数(这也是我们在数学课上学到的舍入规则)
  // string 当字符串处理,直接舍弃
  
  let k = Math.pow(10, prec);	// 10的prec次方

  let resVal = numberVal;
  if(rule == "ceil"){
    resVal = Math.ceil(numberVal * k) / k;
  }else if (rule == "floor"){
    resVal = Math.floor(numberVal * k) / k;
  }else if (rule == "string"){
    // 不做任何数学上的处理
    resVal = resVal.toString();
  }else{
    resVal = Math.round(numberVal * k) / k;
  }

  if(ins0 === false) return resVal;

  // 补0
  resVal = resVal.toString(); // 转字符串, 准备补0

  let resValStrArray = resVal.toString().split(".");

  if(resValStrArray.length == 1){
    resVal = resVal + ".";
    for (let index = 0; index < prec; index++) {
      resVal = resVal + "0";
    }
  }

  if(resValStrArray.length > 1){
    // 存在小数,按需补0

    // prec=0 不需要保留小数,返回整数
    if(prec === 0){ return parseInt(resValStrArray[0]); }

    // resValStrArray[1].length >= prec 小数位已经超过想要保留的小数位
    if(resValStrArray[1].length >= prec){
      // console.log("够小数位")
      let keep_dVal = resValStrArray[1].slice(0, prec)
      return resValStrArray[0] + "." + keep_dVal;
    }

    // 补0
    for (let index = resValStrArray[1].length; index < prec; index++) {
      resVal = resVal + "0";
    }

  }

  return resVal;
}

// eg:
numDecimal(7899.234)  // '7899.23'
numDecimal(7899.234, {rule: "ceil"})  // '7899.24'

numDecimal(7899.9, {prec: 3, rule: "ceil"}) // '7899.900'
numDecimal(7899.9, {prec: 3, rule: "ceil", ins0: false}) // 7899.9

# 格式化金额

/**
 * @description 格式化金额
 * @param number:要格式化的数字
 * @param decimals:保留几位小数 默认2位
 * @param decPoint:小数点符号 默认.
 * @param thousandsSep:千分位符号 默认为,
 */
function filter_formatMoney(number, decimals = 2, decPoint = '.', thousandsSep = ',') {
  number = (number + '').replace(/[^0-9+-Ee.]/g, '')
  let n = !isFinite(+number) ? 0 : +number;	// 金额转数字
  let prec = !isFinite(+decimals) ? 0 : Math.abs(decimals);	// 保留几位小数,参数转数字,确保参数是个数字
  let sep = (typeof thousandsSep === 'undefined') ? ',' : thousandsSep; // 千分位符号
  let dec = (typeof decPoint === 'undefined') ? '.' : decPoint	// 小数点符号
  let s = '';
  
  /* 
  * 保留几位小数
  * @n 数字
  * @prec 保留几位小数
  */
  let toFixedFix = function (n, prec) {
    let k = Math.pow(10, prec);	// 10的prec次方
    // return Math.ceil(n * k) / k
    return '' + Math.floor(n * k) / k
  }
  
  s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.')
  // s = (prec ? numDecimal(n, prec) : '' + Math.round(n)).toString().split('.')
  
  let re = /(-?\d+)(\d{3})/
  while (re.test(s[0])) {
    s[0] = s[0].replace(re, '$1' + sep + '$2')
  }
  if ((s[1] || '').length < prec) {
    s[1] = s[1] || ''
    s[1] += new Array(prec - s[1].length + 1).join('0')
  }
  return s.join(dec);
}

// eg:
let price = filter_formatMoney(699993.45) // '699,993.45'
parseFloat( price.toString().replace(/,/g, "") )  // 699993.45
上次更新: 2022/08/24, 16:19:12
字符串
数组

← 字符串 数组→

Theme by Vdoing | Copyright © 2022-2023 CodeHelper
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式