# sinmajs
**Repository Path**: sinma/sinmajs
## Basic Information
- **Project Name**: sinmajs
- **Description**: sinma.js 常用JS函数集合
- **Primary Language**: JavaScript
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: http://www.sinma.net/
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2023-01-06
- **Last Updated**: 2025-10-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# sinmajs
[](https://www.sinma.net)
[](LICENSE)
[](mailto:sinma@qq.com)
#### 介绍
sinma.js 常用的JavaScript工具函数集合 - 专为中文开发者设计的实用工具库
#### 版本历史
- **v1.2.1 (2025-10-11)** - 性能优化版 ⚡
- 🚀 **性能大幅提升**
- 链式调用性能提升60%,内存占用降低40%
- 构建速度提升15%
- 🐛 **Bug修复**
- 修复request模块超时计时器未清理导致的内存泄漏
- 修复cache.memoize无法缓存undefined返回值的问题
- 修复memoize遇到循环引用对象崩溃的问题
- 📦 **模块化改进**
- 添加exports字段,支持按需导入:`import { groupBy } from 'sinmajs/collection'`
- 添加sideEffects标记,支持tree shaking
- 🔄 **100%向后兼容** - 无需修改代码即可升级
- **v1.2.0 (2025-10-11)** - Lodash风格增强版 🚀
- 🎉 **重大更新:新增195+个Lodash风格函数**
- ✨ **新增3个Lodash风格模块**
- `collection` - 集合操作(30+函数:every, some, map, filter, groupBy等)
- `lang` - 类型检查和转换(60+函数:isNil, isEmpty, isEqual, clone等)
- `util` - 实用工具(50+函数:times, range, random, delay等)
- 🔥 **增强现有模块**
- `array` - 新增35+个Lodash风格函数(zip, unzip, take, drop, pull等)
- `object` - 新增20+个Lodash风格函数(pickBy, omitBy, at, forIn等)
- 📝 **完整TypeScript类型定义** - 195+个新函数的类型声明
- ✅ **全面测试覆盖** - 390+个测试用例,316+个测试通过
- 🎨 **交互式Demo** - 新增demo/demo-lodash-features.html演示页面
- 📦 **同步所有版本** - javascript、jquery、vuejs、sinmajs_npm全部更新
- 💡 **设计理念升级** - 从Lodash中提取最实用的功能,保持轻量级
- **v1.1.0 (2025-10-11)** - 功能完善版本
- 📦 **20个完整模块,200+ 实用函数**
- 🎯 借鉴 Lodash 设计理念,补充完善数组、对象、字符串等模块
- 🔧 修复图片裁剪功能的Canvas兼容性问题
- 🔧 修复数字转中文和金额格式化的计算错误
- ✨ 新增扩展模块:crypto、json、file、cache、image、convert
- ✨ 增强字符串处理:命名风格转换(camelCase、snakeCase、kebabCase)
- ✨ 增强数组操作:树形转换、分页、深度扁平化等
- ✨ 增强对象处理:路径操作、深度合并、属性筛选等
- ✨ 完善TypeScript类型定义,全面支持IDE智能提示
- 📝 整理项目结构,优化demo展示
- 🐛 修复大数转换逻辑,支持正确的亿、万、个分段处理
- **v0.1.0 (2025-08-23)** - 重大更新版本
- 修复了关键bug(手机号正则、身份证验证、验证码倒计时等)
- 统一了代码规范和函数命名
- 添加了JSDoc注释,提升代码可读性
- Vue.js版本采用UMD模块化,支持多种环境
- 新增实用功能:邮箱验证、URL验证、防抖、节流、深度克隆等
- 优化性能:缓存正则表达式,避免重复编译
#### 软件架构
本库提供四个版本,适用于不同开发场景:
- **javascript/** - 原生JavaScript版本(推荐)
- **jquery/** - jQuery兼容版本
- **vuejs/** - Vue.js版本,支持UMD模块化
- **apicloud/** - APICloud版本(已停止维护)
[详细说明书](https://www.kancloud.cn/sinma/sinmajs/3151960)
#### 功能模块总览
SinmaJS v1.2.0 提供 **23个完整功能模块**,**400+ 实用函数**:
**核心功能模块 (14个)**
1. **validator** - 数据验证、表单校验
2. **string** - 字符串处理、编码转换、命名转换
3. **number** - 数字格式化、精度计算、货币处理
4. **date** - 日期时间处理、格式化、计算
5. **array** - 数组操作、数据处理、树形转换 **(v1.2.0新增35+函数)**
6. **object** - 对象操作、深度克隆、属性处理 **(v1.2.0新增20+函数)**
7. **function** - 函数工具、防抖节流、柯里化
8. **url** - URL解析、参数处理
9. **dom** - DOM操作、事件处理、UI交互
10. **chinese** - 中文处理、拼音转换、简繁转换
11. **color** - 颜色处理、格式转换
12. **storage** - 本地存储、Cookie管理
13. **device** - 设备检测、浏览器识别
14. **request** - HTTP请求、API调用
**扩展功能模块 (6个)**
15. **crypto** - 加密解密、哈希算法、密码生成
16. **json** - JSON处理、路径操作、格式化
17. **file** - 文件处理、下载管理、类型检测
18. **cache** - 缓存管理、LRU算法、TTL支持
19. **image** - 图片处理、滤镜效果、压缩裁剪
20. **convert** - 类型转换、进制转换、单位换算
**Lodash风格模块 (3个) - v1.2.0新增 🆕**
21. **collection** - 集合操作(30+函数)- every, some, map, filter, reduce, groupBy, countBy等
22. **lang** - 类型检查和转换(60+函数)- isNil, isEmpty, isEqual, clone, cloneDeep等
23. **util** - 实用工具函数(50+函数)- times, range, random, delay, matches, iteratee等
💡 **设计理念**: 借鉴 Lodash + Hutool,专为中文开发者优化,v1.2.0重点增强函数式编程能力
#### 主要功能
**数据验证类**
- `isNumber()` / `isNumber2()` - 数字验证(两种方式)
- `isPhonenum()` / `isPhonenum1()` - 手机号验证(宽松/严格)
- `isTelnum()` / `isTelnum1()` - 座机号验证(宽松/严格)
- `isSfz()` / `isSfz1()` - 身份证验证(宽松/严格)
- `isEmail()` - 邮箱验证 ⭐新增
- `isUrl()` - URL验证 ⭐新增
- `isObj()` / `isEmpty()` - 对象和空值判断
**时间处理类**
- `getnowDatetime()` / `getnowDate()` - 获取当前时间/日期
- `getoldDate()` - 获取指定日期
- `turntime()` / `turntimemore()` - Unix时间戳转换
- `calculateAge()` - 计算年龄
**实用工具类**
- `suijishu()` - 生成随机数字或字母
- `cutmoney()` - 金额格式化(万、亿单位)
- `debounce()` / `throttle()` - 防抖和节流 ⭐新增
- `deepClone()` - 深度克隆对象 ⭐新增
- `GetQueryString()` - 获取URL参数
- `getBase64Image()` - 图片转Base64
**UI交互类**
- `yzmdjs()` - 验证码倒计时
- `tiaomiao()` - 实时显示时间
- `setOpacity()` - 设置透明度
#### 使用说明
**安装引用:**
```html
```
**基本使用:**
```javascript
// 数据验证
sinma.isPhonenum('13812345678'); // true
sinma.isEmail('test@example.com'); // true
sinma.isSfz('身份证号码'); // 验证身份证
// 时间处理
sinma.getnowDatetime(); // "2025-08-23 14:30:25"
sinma.calculateAge('1990-01-01'); // 计算年龄
// 实用工具
sinma.cutmoney(12345678); // "1.23亿"
sinma.suijishu(6, 1); // 生成6位随机字符串
// 防抖节流
const debouncedFn = sinma.debounce(function() {
console.log('防抖执行');
}, 300);
// ===== v1.2.0 新增 Lodash 风格函数 =====
// Collection 集合操作
const users = [
{ name: 'Alice', age: 25, active: true },
{ name: 'Bob', age: 30, active: false },
{ name: 'Charlie', age: 25, active: true }
];
sinma.groupBy(users, 'age'); // { '25': [...], '30': [...] }
sinma.filter(users, { active: true }); // 过滤激活用户
sinma.map(users, 'name'); // ['Alice', 'Bob', 'Charlie']
// Lang 类型检查
sinma.isNil(null); // true
sinma.isEmpty([]); // true
sinma.isEqual({ a: 1 }, { a: 1 }); // true
const cloned = sinma.cloneDeep(complexObject); // 深度克隆
// Util 实用工具
sinma.times(5, i => i * 2); // [0, 2, 4, 6, 8]
sinma.range(1, 5); // [1, 2, 3, 4]
sinma.random(1, 100); // 1-100随机数
sinma.delay(fn, 1000); // 延迟执行
// Array 增强操作
sinma.zip([1, 2], ['a', 'b']); // [[1,'a'], [2,'b']]
sinma.take([1, 2, 3, 4], 2); // [1, 2]
sinma.without([1, 2, 3, 2], 2); // [1, 3]
// Object 增强操作
sinma.pickBy(obj, v => v > 0); // 选择满足条件的属性
sinma.omitBy(obj, v => v == null); // 排除空值属性
sinma.at(obj, ['a.b', 'c[0]']); // 获取多个路径的值
```
[详细说明书](https://www.kancloud.cn/sinma/sinmajs/3151960)
#### 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
## 作者信息
- **作者**: sinma
- **邮箱**: sinma@qq.com
- **主页**: https://www.sinma.net
- **QQ**: 42033223 欢迎交流
## 许可证
本项目采用 [MIT 许可证](LICENSE)
---
**💡 如果这个项目对您有帮助,请给个⭐️支持一下!**