A comprehensive JavaScript utility library for data processing, organized by data types (arrays, objects, strings, forms, tables)
npm install data-utils-grokbash
npm install
`
使用方法
$3
`javascript
const dataUtils = require('./src');
// 使用数组工具
const uniqueNumbers = dataUtils.uniqueArray([1, 2, 2, 3]);
// 使用对象工具
const cloned = dataUtils.deepClone({ a: 1, b: { c: 2 } });
// 使用字符串工具
const capitalized = dataUtils.capitalize('hello');
// 使用表单工具
const isValidEmail = dataUtils.validateEmail('test@example.com');
// 使用表格工具
const sortedData = dataUtils.sortTableData(tableData, 'name', 'asc');
// 使用日期工具
const formattedDate = dataUtils.formatDate(new Date(), 'YYYY-MM-DD HH:mm:ss');
`
$3
`javascript
const { arrayUtils, objectUtils, stringUtils, formUtils, tableUtils } = require('./src');
// 数组工具
const uniqueNumbers = arrayUtils.uniqueArray([1, 2, 2, 3]);
// 对象工具
const merged = objectUtils.merge({ a: 1 }, { b: 2 });
// 字符串工具
const snakeCase = stringUtils.camelToSnake('camelCase');
// 表单工具
const isValidPhone = formUtils.validatePhone('13800138000');
// 表格工具
const paginated = tableUtils.paginateTableData(data, 1, 10);
// 日期工具
const formattedDate = dateUtils.formatDate(new Date(), 'YYYY-MM-DD');
`
$3
`javascript
const arrayUtils = require('./src/arrayUtils');
const objectUtils = require('./src/objectUtils');
const stringUtils = require('./src/stringUtils');
const formUtils = require('./src/formUtils');
const tableUtils = require('./src/tableUtils');
const dateUtils = require('./src/dateUtils');
`
运行测试
`bash
npm test
`
示例
$3
`javascript
const { uniqueArray, groupBy, sortBy, stats } = require('./src');
// 数组去重
const numbers = [1, 2, 2, 3, 3, 4];
const unique = uniqueArray(numbers); // [1, 2, 3, 4]
// 对象数组去重
const users = [
{ id: 1, name: 'John' },
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' }
];
const uniqueUsers = uniqueArray(users, 'id');
// 分组
const grouped = groupBy(users, 'name');
// 排序
const sorted = sortBy(users, 'id', true);
// 统计
const numbers = [1, 2, 3, 4, 5];
const statistics = stats(numbers);
// { sum: 15, average: 3, min: 1, max: 5 }
`
$3
`javascript
const { deepClone, merge, get, set } = require('./src');
// 深拷贝
const original = { a: 1, b: { c: 2 } };
const cloned = deepClone(original);
// 合并对象
const obj1 = { a: 1, b: { c: 2 } };
const obj2 = { b: { d: 3 }, e: 4 };
const merged = merge(obj1, obj2);
// 获取嵌套属性
const user = { profile: { address: { city: 'Beijing' } } };
const city = get(user, 'profile.address.city');
// 设置嵌套属性
set(user, 'profile.age', 30);
`
$3
`javascript
const { capitalize, camelToSnake, snakeToCamel, format } = require('./src');
// 首字母大写
const result = capitalize('hello'); // 'Hello'
// 命名转换
const snakeCase = camelToSnake('camelCase'); // 'camel_case'
const camelCase = snakeToCamel('snake_case'); // 'snakeCase'
// 字符串格式化
const template = 'Hello {name}, you are {age} years old';
const data = { name: 'John', age: 30 };
const formatted = format(template, data);
// 'Hello John, you are 30 years old'
`
$3
`javascript
const { validateEmail, validatePassword, serializeForm } = require('./src');
// 验证邮箱
const isValidEmail = validateEmail('test@example.com');
// 验证密码强度
const passwordResult = validatePassword('StrongPass123!', {
minLength: 8,
requireUppercase: true,
requireLowercase: true,
requireNumbers: true,
requireSpecialChars: true
});
// 序列化表单数据
const formData = { name: 'John', age: 30 };
const serialized = serializeForm(formData); // 'name=John&age=30'
`
$3
`javascript
const { sortTableData, filterTableData, paginateTableData, exportTableToCSV } = require('./src');
const tableData = [
{ id: 1, name: 'John', age: 30, city: 'Beijing' },
{ id: 2, name: 'Jane', age: 25, city: 'Shanghai' },
{ id: 3, name: 'Bob', age: 35, city: 'Beijing' }
];
// 排序
const sorted = sortTableData(tableData, 'age', 'asc');
// 过滤
const filtered = filterTableData(tableData, { city: 'Beijing' });
// 分页
const paginated = paginateTableData(tableData, 1, 2);
// 导出CSV
const columns = [{ key: 'name', title: 'Name' }, { key: 'age', title: 'Age' }];
const csv = exportTableToCSV(tableData, columns);
`
$3
`javascript
const { formatDate, parseDate, getDateDiff, addDate, getRelativeTime } = require('./src');
// 格式化日期
const formatted = formatDate(new Date(), 'YYYY-MM-DD HH:mm:ss');
// 解析日期字符串
const date = parseDate('2024-01-15', 'YYYY-MM-DD');
// 计算日期差
const diff = getDateDiff(new Date('2024-01-01'), new Date('2024-01-10'), 'days');
// 添加时间
const futureDate = addDate(new Date(), 7, 'days');
// 获取相对时间
const relativeTime = getRelativeTime(new Date('2024-01-01'));
`
`
项目结构
`
src/
├── index.js # 主入口文件
├── arrayUtils.js # 数组类型处理
├── objectUtils.js # 对象类型处理
├── stringUtils.js # 字符串类型处理
├── formUtils.js # 表单类型处理
├── tableUtils.js # 表格类型处理
└── dateUtils.js # 日期类型处理
tests/
└── index.test.js # 测试文件
``