首页IT科技js封装api接口(一些好用的javascript/typescript方法封装分享)

js封装api接口(一些好用的javascript/typescript方法封装分享)

时间2025-07-31 04:49:48分类IT科技浏览8328
导读:1、数字格式化 JS版-直接写到原型链上 /** * @author: silencetea *...

1                、数字格式化

JS版-直接写到原型链上 /** * @author: silencetea * @name: * @description: 数字格式化                ,默认每三位用英文逗号分隔 * @param {number} number 要格式化的数字 * @param {number} decimals 保留几位小数                        ,默认不保留小数 * @param {string} dec_point 小数点符号        ,默认“.                ” * @param {string} thousands_sep 千分位符号                ,默认英文逗号 * @return {*} */ Number.Format = (number, decimals, dec_point, thousands_sep) => { number = (number + "").replace(/[^0-9+-Ee.]/g, ""); let n = !isFinite(+number) ? 0 : +number, prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), sep = typeof thousands_sep === "undefined" ? "," : thousands_sep, dec = typeof dec_point === "undefined" ? "." : dec_point, s = "", toFixedFix = function (n, prec) { let k = Math.pow(10, prec); return "" + Math.ceil(n * k) / k; }; s = (prec ? toFixedFix(n, prec) : "" + Math.round(n)).split("."); let re = /(-?\d+)(\d{3})/; while (re.test(s[0])) { s[0] = s[0].replace(re, "$1" + sep + "$2"); } // 小数点后位数不够补0                        ,需要补0        ,放开下方被注释的代码即可 // if ((s[1] || "").length < prec) { // s[1] = s[1] || ""; // s[1] += new Array(prec - s[1].length + 1).join("0"); // } return s.join(dec); }; JS版-封装方法 /** * @author: silencetea * @name: numberFormat * @description: 数字格式化        ,默认每三位用英文逗号分隔 * @param {number} number 要格式化的数字 * @param {number} decimals 保留几位小数                        ,默认不保留小数 * @param {string} dec_point 小数点符号                ,默认“.                        ” * @param {string} thousands_sep 千分位符号        ,默认英文逗号 * @return {*} */ const numberFormat = ( number, decimals = 0, dec_point = ., thousands_sep = ,, ) => { let numberStr = (number + ).replace(/[^0-9+-Ee.]/g, ); let n = !isFinite(+numberStr) ? 0 : +numberStr, prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), sep = typeof thousands_sep === undefined ? , : thousands_sep, dec = typeof dec_point === undefined ? . : dec_point, s, toFixedFix = function (n, prec) { let k = Math.pow(10, prec); return + Math.ceil(n * k) / k; }; s = (prec ? toFixedFix(n, prec) : + Math.round(n)).split(.); let re = /(-?\d+)(\d{3})/; while (re.test(s[0])) { s[0] = s[0].replace(re, $1 + sep + $2); } // 小数点后位数不够补0                        ,不需要补0可以注释掉 if ((s[1] || ).length < prec) { s[1] = s[1] || ; s[1] += new Array(prec - s[1].length + 1).join(0); } return s.join(dec); }; TS版-封装方法 /** * @author: silencetea * @name: numberFormat * @description: 数字格式化                ,默认每三位用英文逗号分隔 * @param {number} number 要格式化的数字 * @param {number} decimals 保留几位小数,默认不保留小数 * @param {string} dec_point 小数点符号                        ,默认“.        ” * @param {string} thousands_sep 千分位符号                        ,默认英文逗号 * @return {*} */ const numberFormat = ( number: number, decimals: number = 0, dec_point: string = ., thousands_sep: string = ,, ) => { let numberStr = (number + ).replace(/[^0-9+-Ee.]/g, ); let n = !isFinite(+numberStr) ? 0 : +numberStr, prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), sep = typeof thousands_sep === undefined ? , : thousands_sep, dec = typeof dec_point === undefined ? . : dec_point, s, toFixedFix = function (n: number, prec: number) { let k = Math.pow(10, prec); return + Math.ceil(n * k) / k; }; s = (prec ? toFixedFix(n, prec) : + Math.round(n)).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); };

2                        、字节进级换算

JS版-封装方法 /** * @author: silencetea * @name: * @description: 字节进级换算 * @param {number} number 要换算的数字 * @param {string} unit 数字单位,默认KB * @param {number} lev 数字超过多少位进行换算                ,默认5 * @param {Array<string>} sizes 数组                        ,进位的各级单位 * @return {*} */ Number.GBToSize = (number, unit=KB, lev = 5, sizes = ["KB", "MB" ,"GB", "TB", "PB", "EB", "ZB", "YB"]) => { if (typeof number !== number) { return {}; } let num = number, i = sizes.indexOf(unit); while (num.toString().split(.)[0].length > lev) { num = Math.round(num / 1024); i++; } return { num: num, unit: sizes[i], }; };

3        、个        、万                        、十万等换算

JS版-封装方法 /** * @author: silencetea * @name: orderOfMagnitudeConversion * @description: 个                、万        、十万等换算 * @return {*} * @param {number} number 要换算的数字 * @param {string} unit 传入的数字单位        ,默认无                ,即“个        ” */ const orderOfMagnitudeConversion = ( number, unit = ) => { let k = [1, 10000, 1000], sizes = [, , 千万], num = number, i = sizes.indexOf(unit); while ((num.toString() + sizes[i]).length > 6) { if (i >= k.length - 1) { // console.log("break", num.toString() + sizes[i]) break; } else { i++; num = Math.round(num / k[i]); } } return { num: numberFormat(num), unit: sizes[i] }; };

4                        、数字数组排序                        ,默认从小到大

TS版-封装方法 /** * @author: silencetea * @name: sortNumberArray * @description: 数字数组排序        ,默认升序:从小到大 * @param {Array<number>} data * @param {string} sortType 排序方式        ,asc升序                        ,desc降序 * @return {*} */ const sortNumberArray = ( data: Array<number>, sortType: string = "asc" ) => { if (sortType === "asc") { data.sort((x: number, y: number) => { return x - y; }); } else if (sortType === "desc") { data.sort((x: number, y: number) => { return y - x; }); } return data; };

5                、日期格式化                ,调用方式        ,new Date(datevalue).Format(yyyy-MM-dd HH:mm:ss)                        ,或者new Date().Format(yyyy-MM-dd)

JS版-直接写到原型链上 /** * @author: silencetea * @name: sortNumberArray * @description: 数字数组排序                ,默认升序:从小到大 * @param {any} fmt 要以何种格式格式化 * @return {*} */ Date.prototype.Format = (fmt) => { let o = { M+: this.getMonth() + 1, d+: this.getDate(), H+: this.getHours(), m+: this.getMinutes(), s+: this.getSeconds(), S+: this.getMilliseconds() }; //因为date.getFullYear()出来的结果是number类型的,所以为了让结果变成字符串型,下面有两种方法: if (/(y+)/.test(fmt)) { //第一种:利用字符串连接符“+                        ”给date.getFullYear()+                        ,加一个空字符串便可以将number类型转换成字符串                。 fmt = fmt.replace(RegExp.$1, (this.getFullYear() + ).substr(4 - RegExp.$1.length)); } for (var k in o) { if (new RegExp(( + k + )).test(fmt)) { //第二种:使用String()类型进行强制数据类型转换String(date.getFullYear())                        ,这种更容易理解                        。 fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : ((00 + o[k]).substr(String(o[k]).length))); } } return fmt; }; TS版-封装方法 /** * @author: silencetea * @name: sortNumberArray * @description: 数字数组排序,默认升序:从小到大 * @param {any} fmt 要以何种格式格式化 * @param {any} datetime 要格式化的日期时间 * @return {*} */ const datetimeFormat = (fmt: any, datetime?:any) => { let _this = datetime ? new Date(datetime) : new Date(); let o:any = { M+: _this.getMonth() + 1, d+: _this.getDate(), H+: _this.getHours(), m+: _this.getMinutes(), s+: _this.getSeconds(), S+: _this.getMilliseconds() }; //因为date.getFullYear()出来的结果是number类型的,所以为了让结果变成字符串型                ,下面有两种方法: if (/(y+)/.test(fmt)) { //第一种:利用字符串连接符“+                ”给date.getFullYear()+                        ,加一个空字符串便可以将number类型转换成字符串        。 fmt = fmt.replace(RegExp.$1, (_this.getFullYear() + ).substr(4 - RegExp.$1.length)); } for (let k in o) { if (new RegExp(( + k + )).test(fmt)) { //第二种:使用String()类型进行强制数据类型转换String(date.getFullYear())        ,这种更容易理解                。 fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : ((00 + o[k]).substr(String(o[k]).length))); } } return fmt; };

本文链接:https://www.cnblogs.com/xsilence/p/16382118.html

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
vue 电商网站源码(vue大型电商项目尚品汇(后台篇)day01) 华为如何关闭纯净模式(关闭Windows Defender的一种方法)