# jcore **Repository Path**: lijinbode/jcore ## Basic Information - **Project Name**: jcore - **Description**: 常用方法收集 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-04-16 - **Last Updated**: 2023-07-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: 工具方法, JavaScript ## README [toc] > 常用方法收集,一个小型的工具库 # collect 常用收藏 ## getType 获取数据类型 ```js test('null', () => { let res = j.getType(null) expect(res).toBe('null'); }); test('数组', () => { let res = j.getType([1, 2, 3]) expect(res).toBe('array'); }); ``` ## humpName 连字符转驼峰名 ```js test('标识符在第一个', () => { let res = j.humpName('-aaabbb') expect(res).toBe('aaabbb'); }); test('get-list', () => { let res = j.humpName('get-list') expect(res).toBe('getList'); }); test('get_list', () => { let res = j.humpName('get_list', '_') expect(res).toBe('getList'); }); ``` ## toLowerLine 驼峰名转连字符 ```js test('标识符在第一个', () => { let res = j.toLowerLine('Aaabbb') expect(res).toBe('aaabbb'); }); test('getList', () => { let res = j.toLowerLine('getList') expect(res).toBe('get-list'); }); test('getList', () => { let res = j.toLowerLine('getList', '_') expect(res).toBe('get_list'); }); ``` ## arrayRandom 数组随机排序 ```js test('简单数组', () => { let res = j.arrayRandom([1, 2, 3]) expect(res).toHaveLength(3); }); test('对象数组', () => { let res = j.arrayRandom([{ a: 1 }, { b: 2 }, { c: 3 }]) expect(res).toHaveLength(3); }); ``` ## arrayChunk 数组等距拆分 ```js let list = [1, 2, 3, 4, 5] test('边界判断', () => { let res = j.arrayChunk(list, 9) expect(res).toHaveLength(1); }); test('常规操作', () => { let res = j.arrayChunk(list, 3) expect(res).toHaveLength(2); expect(res[0]).toHaveLength(3); expect(res[1]).toHaveLength(2); }); ``` ## deepCloneJson 对象深拷贝【简易版】不拷贝对象里面的函数 ```js test('拷贝对象', () => { let obj = { name: 'tom', data: { key: 'a', value: 1 } } let objCopy = j.deepCloneJson(obj) objCopy.data = null expect(obj.name).toBe('tom'); expect(obj.data.value).toBe(1); }); ``` ## debounce 函数防抖 ```js const sleep = (t) => { return new Promise(a => setTimeout(a, t)) } function debounceTest(title, immediate, time, value) { test(title, async () => { let count = 0 // 防抖间隔 100ms const setCount = j.debounce(function () { count++ }, 100, immediate) for (let i = 0; i < 3; i++) { await sleep(time) setCount() } expect(count).toBe(value); }); } debounceTest('普通点击-立即执行', true, 200, 3) debounceTest('防抖操作-立即执行', true, 50, 1) debounceTest('普通点击-非立即执行', false, 200, 2) debounceTest('防抖操作-非立即执行', false, 50, 0) ``` ## prefixNum 数字补零 ```js test('非空判断', () => { let res = j.prefixNum(NaN) expect(res).toBe(''); }); test('边界判断', () => { let res = j.prefixNum(100, 2) expect(res).toBe('100'); }); test('常规操作', () => { let res = j.prefixNum(2, 3) expect(res).toBe('002'); }); ``` ## compareVersion 软件版本比较 ```js test('非空判断', () => { let res = j.compareVersion('', '') expect(res).toBe(false); }); test('常规操作 - 没有新版本', () => { let res = j.compareVersion('1.0.1', '1.1.0') expect(res).toBe(false); }); test('常规操作 - 有新版本', () => { let res = j.compareVersion('2.0.0', '1.9.99') expect(res).toBe(true); }); test('常规操作 - 版本相同', () => { let res = j.compareVersion('1.0.0', '1.0.0') expect(res).toBe(false); }); ``` # easyHash 简易 hash 运算 ## guid 生成全局唯一标识符 ```js test('guid 标准带横线', () => { expect(j.guid(true)).toHaveLength(36); }); test('guid 32位 类似 md5 值', () => { expect(j.guid()).toHaveLength(32); }); test('guid 自定义标识', () => { expect(j.guid(true, 'diyHead_')).toMatch(/diyHead_/); }); ``` ## textHax 简易的hash运算 ```js test('新年快乐 hash', () => { expect(j.textHax('新年快乐')).toBe('bnuxo27ln6g'); }); ``` # other 其他 ## valiPasswordStrong 验证密码强度 ```js test('1564677900 密码强度', () => { let res = j.valiPasswordStrong('1564677900') expect(res.strong).toBe(10); }); ``` ## specCartesian 笛卡尔数据积 ```js test('商品 SUP 供货', () => { let list = [ ['红色', '黑色', '白色'], ['m码', 'x码'], ['T恤'] ] let res = j.specCartesian(list) expect(res).toHaveLength(6); }); ``` ## deepCloneObj 对象深拷贝【中级版】 ```js test('空', () => { let res = j.deepCloneObj('') expect(res).toBe(null); }); test('拷贝对象', () => { let obj = { name: 'tom', data: { key: 'a', value: 1 } } let objCopy = j.deepCloneObj(obj) objCopy.data = null expect(obj.name).toBe('tom'); expect(obj.data.value).toBe(1); }); ``` ## toChinesNum 阿拉伯数字转中文数字 ```js test('0', () => { let res = j.toChinesNum(0) expect(res).toBe('零'); }); test('10010 边界测试1', () => { let res = j.toChinesNum(10010) expect(res).toBe('一万零十'); }); test('1001001 边界测试2', () => { let res = j.toChinesNum(1001001) expect(res).toBe('一百万一千零一'); }); test('123 普通数字', () => { let res = j.toChinesNum(123) expect(res).toBe('一百二十三'); }); ``` # time 时间处理相关 ## parseTime 时间格式转化 ```js test('判空', () => { let res = j.parseTime() expect(res).toBe(''); }); test('数字 13位', () => { let res = j.parseTime(1639470946954, '{y}年{m}月{d}日 星期{a}') expect(res).toBe('2021年12月14日 星期二'); }); test('数字 10位', () => { let res = j.parseTime(1639470946, '{y}年{m}月{d}日') expect(res).toBe('2021年12月14日'); }); test('Date 对象', () => { let res = j.parseTime(new Date()) expect(res).toHaveLength(19); }); test('字符串', () => { let res = j.parseTime('2021-10-10 12:12:12') expect(res).toHaveLength(19); }); test('字符串型数字', () => { let res = j.parseTime('1639470946954') expect(res).toBe('2021-12-14 16:35:46'); }); ``` ## formatTime 时间距离,显示距离当前多少时间 ```js let curTime = new Date() test('当前时间', () => { let res = j.formatTime(curTime) expect(res).toMatch(/刚刚/); }); test('5分钟', () => { curTime.setMinutes(curTime.getMinutes() - 5) let res = j.formatTime(curTime) expect(res).toMatch(/分钟/); }); test('2小时', () => { curTime.setHours(curTime.getHours() - 2) let res = j.formatTime(curTime) expect(res).toMatch(/小时/); }); test('1996年', () => { let res = j.formatTime('1996-09-26 08:08:08') expect(res).toMatch(/天前/); }); ``` ## getTimeDistance 获取时间距离[做倒计时很好用] ```js test('十天后', () => { let date = new Date() date.setDate(date.getDate() + 10) let res = j.getTimeDistance(date) expect(res).toHaveLength(11); }); ```