jsly 3.0.2 → 3.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -3
- package/dist/index.cjs.js +28 -20
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +28 -20
- package/dist/index.esm.js.map +1 -1
- package/dist/index.umd.js +3 -3
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -130,15 +130,27 @@ try {
|
|
|
130
130
|
### 字符串与对象命名转换
|
|
131
131
|
|
|
132
132
|
```javascript
|
|
133
|
-
import { camelToSnake, snakeToCamel, toggleConvertCase,
|
|
133
|
+
import { camelToSnake, snakeToCamel, toggleConvertCase, convertKeys } from 'jsly'
|
|
134
134
|
|
|
135
|
+
// 字符串转换
|
|
135
136
|
console.log(camelToSnake('myVariable')) // my_variable
|
|
136
137
|
console.log(snakeToCamel('my_variable')) // myVariable
|
|
137
138
|
console.log(toggleConvertCase('myVariable')) // my_variable
|
|
138
139
|
console.log(toggleConvertCase('my_variable')) // myVariable
|
|
139
140
|
|
|
140
|
-
|
|
141
|
-
console.log(
|
|
141
|
+
// 对象键名转换(默认只转换首层)
|
|
142
|
+
console.log(convertKeys({ user_name: 'Tom', user_info: { phone_number: '123' } }, 'camel'))
|
|
143
|
+
// => { userName: 'Tom', userInfo: { phone_number: '123' } }
|
|
144
|
+
|
|
145
|
+
// 递归转换所有层级
|
|
146
|
+
console.log(convertKeys({ user_name: 'Tom', user_info: { phone_number: '123' } }, 'camel', true))
|
|
147
|
+
// => { userName: 'Tom', userInfo: { phoneNumber: '123' } }
|
|
148
|
+
|
|
149
|
+
console.log(convertKeys({ userName: 'Tom', userInfo: { phoneNumber: '123' } }, 'snake'))
|
|
150
|
+
// => { user_name: 'Tom', user_info: { phoneNumber: '123' } }
|
|
151
|
+
|
|
152
|
+
console.log(convertKeys({ userName: 'Tom', userInfo: { phoneNumber: '123' } }, 'snake', true))
|
|
153
|
+
// => { user_name: 'Tom', user_info: { phone_number: '123' } }
|
|
142
154
|
|
|
143
155
|
```
|
|
144
156
|
|
package/dist/index.cjs.js
CHANGED
|
@@ -7351,39 +7351,47 @@ function toggleConvertCase(str) {
|
|
|
7351
7351
|
}
|
|
7352
7352
|
|
|
7353
7353
|
/**
|
|
7354
|
-
*
|
|
7355
|
-
*
|
|
7356
|
-
* @param {object
|
|
7357
|
-
* @param {'camel'|'snake'}
|
|
7358
|
-
* @
|
|
7354
|
+
* 转换对象的键名格式(支持可选递归)
|
|
7355
|
+
*
|
|
7356
|
+
* @param {object} obj - 需要转换的对象
|
|
7357
|
+
* @param {'camel'|'snake'} targetType - 目标格式:'camel' 转小驼峰;'snake' 转下划线
|
|
7358
|
+
* @param {boolean} [deep=false] - 是否递归转换(默认 false,仅转换首层)
|
|
7359
|
+
* @returns {object} - 转换后的新对象
|
|
7359
7360
|
*
|
|
7360
7361
|
* @example
|
|
7361
7362
|
* convertKeys({ user_name: 'Tom', user_info: { phone_number: '123' } }, 'camel')
|
|
7363
|
+
* // => { userName: 'Tom', userInfo: { phone_number: '123' } }
|
|
7364
|
+
*
|
|
7365
|
+
* @example
|
|
7366
|
+
* convertKeys({ user_name: 'Tom', user_info: { phone_number: '123' } }, 'camel', true)
|
|
7362
7367
|
* // => { userName: 'Tom', userInfo: { phoneNumber: '123' } }
|
|
7363
7368
|
*
|
|
7364
7369
|
* @example
|
|
7365
7370
|
* convertKeys({ userName: 'Tom', userInfo: { phoneNumber: '123' } }, 'snake')
|
|
7371
|
+
* // => { user_name: 'Tom', user_info: { phoneNumber: '123' } }
|
|
7372
|
+
*
|
|
7373
|
+
* @example
|
|
7374
|
+
* convertKeys({ userName: 'Tom', userInfo: { phoneNumber: '123' } }, 'snake', true)
|
|
7366
7375
|
* // => { user_name: 'Tom', user_info: { phone_number: '123' } }
|
|
7367
7376
|
*/
|
|
7368
|
-
function convertKeys(
|
|
7369
|
-
if (
|
|
7370
|
-
|
|
7377
|
+
function convertKeys(obj, targetType = 'camel', deep = false) {
|
|
7378
|
+
if (obj === null || typeof obj !== 'object' || Array.isArray(obj)) {
|
|
7379
|
+
throw new Error('convertKeys 仅支持对象类型');
|
|
7371
7380
|
}
|
|
7372
|
-
if (!['camel', 'snake'].includes(
|
|
7373
|
-
throw new Error("convertKeys
|
|
7381
|
+
if (!['camel', 'snake'].includes(targetType)) {
|
|
7382
|
+
throw new Error("convertKeys targetType 必须是 'camel' 或 'snake'");
|
|
7374
7383
|
}
|
|
7384
|
+
const result = {};
|
|
7385
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
7386
|
+
const newKey = targetType === 'camel' ? snakeToCamel(key) : camelToSnake(key);
|
|
7375
7387
|
|
|
7376
|
-
|
|
7377
|
-
|
|
7378
|
-
|
|
7388
|
+
// 如果开启递归并且值是对象,则递归转换
|
|
7389
|
+
if (deep && value && typeof value === 'object' && !Array.isArray(value)) {
|
|
7390
|
+
result[newKey] = convertKeys(value, targetType, deep);
|
|
7391
|
+
} else {
|
|
7392
|
+
result[newKey] = value;
|
|
7393
|
+
}
|
|
7379
7394
|
}
|
|
7380
|
-
|
|
7381
|
-
// 处理对象
|
|
7382
|
-
const result = {};
|
|
7383
|
-
Object.entries(data).forEach(([key, value]) => {
|
|
7384
|
-
const newKey = type === 'camel' ? snakeToCamel(key) : camelToSnake(key);
|
|
7385
|
-
result[newKey] = convertKeys(value, type);
|
|
7386
|
-
});
|
|
7387
7395
|
return result;
|
|
7388
7396
|
}
|
|
7389
7397
|
|