js-util-libs
Advanced tools
| describe("number相关测试", () => { | ||
| it("number函数", () => { | ||
| const { largeNumberAdd, largeNumbersMultiply } = require("../index"); | ||
| //大数相乘 参数需传字符串数字 | ||
| expect(largeNumbersMultiply("199999990", "9007199254740991")).toBe("1801439760876205652590090") | ||
| //大数相加 参数需传字符串数字 | ||
| expect(largeNumberAdd("199999990", "9007199254740991")).toBe("9007199454740981"); | ||
| }); | ||
| }); |
| const { isType } = require("../check/index"); | ||
| // 大数相加 | ||
| exports.largeNumberAdd = (a, b) => { | ||
| if (isType(a) !== 'String' || isType(a) !== 'String') { | ||
| console.error('大数相乘参数请传字符串数字'); | ||
| return; | ||
| } | ||
| //取两个数字的最大长度 | ||
| let maxLength = Math.max(a.length, b.length); | ||
| //用0去补齐长度 | ||
| a = a.padStart(maxLength, 0); //"0009007199254740991" | ||
| b = b.padStart(maxLength, 0); //"1234567899999999999" | ||
| //定义加法过程中需要用到的变量 | ||
| let t = 0; | ||
| let f = 0; //"进位" | ||
| let sum = ""; | ||
| for (let i = maxLength - 1; i >= 0; i--) { | ||
| t = parseInt(a[i]) + parseInt(b[i]) + f; | ||
| f = Math.floor(t / 10); | ||
| sum = (t % 10) + sum; | ||
| } | ||
| if (f == 1) { | ||
| sum = "1" + sum; | ||
| } | ||
| return sum; | ||
| }; | ||
| // 大数相乘 | ||
| exports.largeNumbersMultiply = (num1, num2) => { | ||
| if (isType(num1) !== 'String' || isType(num2) !== 'String') { | ||
| console.error('大数相加参数请传字符串数字'); | ||
| return; | ||
| } | ||
| if (isNaN(num1) || isNaN(num2)) return ""; | ||
| if (num1 === "0" || num2 === "0") return "0"; | ||
| let l1 = num1.length, | ||
| l2 = num2.length; | ||
| let result = []; | ||
| for (let i = l1 - 1; i >= 0; i--) { | ||
| for (let j = l2 - 1; j >= 0; j--) { | ||
| let index1 = i + j; | ||
| let index2 = i + j + 1; | ||
| let product = num1[i] * num2[j] + (result[index2] || 0); | ||
| result[index2] = product % 10; | ||
| result[index1] = Math.floor(product / 10) + (result[index1] || 0); | ||
| } | ||
| } | ||
| return result.join("").replace(/^0+/, ""); | ||
| }; |
+13
-6
@@ -30,3 +30,3 @@ // 防抖节流 | ||
| // 原生实现鼠标滚动动画缓冲 滚动到底部 滚动到底部 | ||
| export { scrollAnimation, scrollToTop ,scrollToBottom} | ||
| export { scrollAnimation, scrollToTop, scrollToBottom } | ||
| from "./src/scrollAnimation/index.js"; | ||
@@ -140,12 +140,19 @@ | ||
| // 扁平数据结构转Tree 数组乱序 去重 扁平化 | ||
| export { arrayToTree , arrScrambling, unique, flat} | ||
| export { arrayToTree, arrScrambling, unique, flat } | ||
| from "./src/array/index.js"; | ||
| // 1、指定范围随机数 2、随机长度字符串 3、数组随机数 | ||
| export { randomString, randomRange, randomNum } from "./src/random/index.js" | ||
| export { randomString, randomRange, randomNum } | ||
| from "./src/random/index.js" | ||
| // 数字转为大写金额 | ||
| export { digitUppercase } from "./src/digitUppercase/index.js" | ||
| export { digitUppercase } | ||
| from "./src/digitUppercase/index.js" | ||
| // 手机号中间四位变* | ||
| export { telFormat } from "./src/common/index.js" | ||
| // 手机号中间四位变* 字符串首字母大写 | ||
| export { telFormat, fistLetterUpper } | ||
| from "./src/common/index.js" | ||
| // 大数相加 大数相乘 | ||
| export { largeNumberAdd, largeNumbersMultiply } | ||
| from "./src/number/index.js" |
+5
-2
| { | ||
| "name": "js-util-libs", | ||
| "description": "js常见的函数工具库", | ||
| "version": "1.2.3", | ||
| "version": "1.2.4", | ||
| "author": "fuzhaoyang <932647051@qq.com>", | ||
@@ -87,5 +87,8 @@ "license": "MIT", | ||
| "isVersion", | ||
| "isPassport" | ||
| "isPassport", | ||
| "largeNumberAdd", | ||
| "largeNumbersMultiply", | ||
| "fistLetterUpper" | ||
| ], | ||
| "homepage": "https://github.com/fuzhaoyang/js-util-libs.git" | ||
| } |
+24
-12
@@ -5,4 +5,7 @@ # js-util-libs(函数库) | ||
| js 常见函数工具库 | ||
| 在开发中,我们经常会将一些常用的代码块、功能块进行封装,为的是更好的复用。那么,被抽离出来独立完成功能,通过API或配置项和其他部分交互,便形成了插件(工具函数)。 | ||
| 下面这些是我在工作中积累的一些常用的前端开源工具函数,需要读者根据自己的实际业务需求进行install安装,根据业务需求选用,涵盖率80%以上,欢迎留言交流和补充。^_^ | ||
| 另外,不要重复造轮子,把精力放在业务逻辑上! | ||
| ## Install(安装) | ||
@@ -48,6 +51,14 @@ | ||
| 19、手机号中间四位变成* (177****698) | ||
| 19、手机号中间四位变成* (177****698) | ||
| 20、滚动条滚动 | ||
| 20、字符串首字母大写 (Hello) | ||
| 21、number边界处理 | ||
| 1.大数相加 | ||
| 2.大数相乘 | ||
| 22、滚动条滚动 | ||
| 1.动画缓冲(scrollAnimation) | ||
@@ -59,3 +70,3 @@ | ||
| 21、时间戳转格式 | ||
| 23、时间戳转格式 | ||
@@ -68,3 +79,3 @@ 1:YYYY-MM-DD HH:MM:SS | ||
| 22、随机数 | ||
| 24、随机数 | ||
@@ -77,3 +88,3 @@ 1:指定长度随机字符串 | ||
| 23、6种排序方式 | ||
| 25、6种排序方式 | ||
@@ -92,3 +103,3 @@ 1:冒泡排序 | ||
| 24、数组 | ||
| 26、数组 | ||
@@ -101,3 +112,3 @@ 1.扁平数据结构转Tree | ||
| 25、Base64 | ||
| 27、Base64 | ||
@@ -108,3 +119,3 @@ 1.加密 | ||
| 26、UTF-8 | ||
| 28、UTF-8 | ||
@@ -115,3 +126,3 @@ 1.加密 | ||
| 27、cookie | ||
| 29、cookie | ||
@@ -124,3 +135,3 @@ 1.设置 | ||
| 28、常用校验 | ||
| 30、常用校验 | ||
@@ -176,3 +187,4 @@ 1.邮箱校验 | ||
| 6、不要修改 packjson 版本号,版本号为线上最新用户使用版本 | ||
| 7、Pull requests 测试用例过后,静等作者合代码 | ||
| 7、Pull requests 测试用例过后,静等作者合代码 | ||
| 8、代码合并后,作者会及时发布在npm上,更新修复版本 | ||
@@ -179,0 +191,0 @@ ## Contact me(联系我) |
| // 手机号中间四位变成* | ||
| exports.telFormat = (tel) => { | ||
| tel = String(tel); | ||
| return tel.substr(0,3) + "****" + tel.substr(7); | ||
| tel = String(tel); | ||
| return tel.substr(0, 3) + "****" + tel.substr(7); | ||
| }; | ||
| // 字符串首字母大写 | ||
| exports.fistLetterUpper = (str) => { | ||
| return str.charAt(0).toUpperCase() + str.slice(1); | ||
| }; |
62480
5.34%83
2.47%1568
4.32%192
6.67%