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/dist/index.esm.js
CHANGED
|
@@ -7349,39 +7349,47 @@ function toggleConvertCase(str) {
|
|
|
7349
7349
|
}
|
|
7350
7350
|
|
|
7351
7351
|
/**
|
|
7352
|
-
*
|
|
7353
|
-
*
|
|
7354
|
-
* @param {object
|
|
7355
|
-
* @param {'camel'|'snake'}
|
|
7356
|
-
* @
|
|
7352
|
+
* 转换对象的键名格式(支持可选递归)
|
|
7353
|
+
*
|
|
7354
|
+
* @param {object} obj - 需要转换的对象
|
|
7355
|
+
* @param {'camel'|'snake'} targetType - 目标格式:'camel' 转小驼峰;'snake' 转下划线
|
|
7356
|
+
* @param {boolean} [deep=false] - 是否递归转换(默认 false,仅转换首层)
|
|
7357
|
+
* @returns {object} - 转换后的新对象
|
|
7357
7358
|
*
|
|
7358
7359
|
* @example
|
|
7359
7360
|
* convertKeys({ user_name: 'Tom', user_info: { phone_number: '123' } }, 'camel')
|
|
7361
|
+
* // => { userName: 'Tom', userInfo: { phone_number: '123' } }
|
|
7362
|
+
*
|
|
7363
|
+
* @example
|
|
7364
|
+
* convertKeys({ user_name: 'Tom', user_info: { phone_number: '123' } }, 'camel', true)
|
|
7360
7365
|
* // => { userName: 'Tom', userInfo: { phoneNumber: '123' } }
|
|
7361
7366
|
*
|
|
7362
7367
|
* @example
|
|
7363
7368
|
* convertKeys({ userName: 'Tom', userInfo: { phoneNumber: '123' } }, 'snake')
|
|
7369
|
+
* // => { user_name: 'Tom', user_info: { phoneNumber: '123' } }
|
|
7370
|
+
*
|
|
7371
|
+
* @example
|
|
7372
|
+
* convertKeys({ userName: 'Tom', userInfo: { phoneNumber: '123' } }, 'snake', true)
|
|
7364
7373
|
* // => { user_name: 'Tom', user_info: { phone_number: '123' } }
|
|
7365
7374
|
*/
|
|
7366
|
-
function convertKeys(
|
|
7367
|
-
if (
|
|
7368
|
-
|
|
7375
|
+
function convertKeys(obj, targetType = 'camel', deep = false) {
|
|
7376
|
+
if (obj === null || typeof obj !== 'object' || Array.isArray(obj)) {
|
|
7377
|
+
throw new Error('convertKeys 仅支持对象类型');
|
|
7369
7378
|
}
|
|
7370
|
-
if (!['camel', 'snake'].includes(
|
|
7371
|
-
throw new Error("convertKeys
|
|
7379
|
+
if (!['camel', 'snake'].includes(targetType)) {
|
|
7380
|
+
throw new Error("convertKeys targetType 必须是 'camel' 或 'snake'");
|
|
7372
7381
|
}
|
|
7382
|
+
const result = {};
|
|
7383
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
7384
|
+
const newKey = targetType === 'camel' ? snakeToCamel(key) : camelToSnake(key);
|
|
7373
7385
|
|
|
7374
|
-
|
|
7375
|
-
|
|
7376
|
-
|
|
7386
|
+
// 如果开启递归并且值是对象,则递归转换
|
|
7387
|
+
if (deep && value && typeof value === 'object' && !Array.isArray(value)) {
|
|
7388
|
+
result[newKey] = convertKeys(value, targetType, deep);
|
|
7389
|
+
} else {
|
|
7390
|
+
result[newKey] = value;
|
|
7391
|
+
}
|
|
7377
7392
|
}
|
|
7378
|
-
|
|
7379
|
-
// 处理对象
|
|
7380
|
-
const result = {};
|
|
7381
|
-
Object.entries(data).forEach(([key, value]) => {
|
|
7382
|
-
const newKey = type === 'camel' ? snakeToCamel(key) : camelToSnake(key);
|
|
7383
|
-
result[newKey] = convertKeys(value, type);
|
|
7384
|
-
});
|
|
7385
7393
|
return result;
|
|
7386
7394
|
}
|
|
7387
7395
|
|