如何查找并移除所有下划线并将下划线后首字母大写?以及如何将对象下划线键转换为驼峰式(camelCase)键?
将下划线命名的对象键转换为驼峰式(camelCase)的实现方法
这是前端开发里很常见的需求,尤其是对接后端返回的对象时,经常需要把下划线命名的键转换成前端更常用的驼峰式。我来一步步拆解实现方法,从单个字符串转换到完整对象处理,甚至覆盖嵌套结构的场景。
第一步:单个字符串的驼峰转换
首先我们需要一个工具函数,把下划线格式的字符串转成驼峰式。用正则表达式就能高效完成这个操作:
function toCamelCase(str) { // 全局匹配「下划线+小写字母」的组合,把捕获到的小写字母转大写后替换 return str.replace(/_([a-z])/g, (match, capturedChar) => capturedChar.toUpperCase()); }
测试几个例子:
toCamelCase('api_key')→'apiKey'toCamelCase('is_auth')→'isAuth'toCamelCase('user_name_info')→'userNameInfo'
原理很直观:正则/_([a-z])/g会匹配所有下划线后面紧跟的小写字母,替换回调里的capturedChar就是那个被捕获的小写字母,我们把它转成大写后,替换掉原来的_x组合,就得到了标准的驼峰式字符串。
第二步:转换整个对象的键
有了单个字符串的转换函数,接下来就可以遍历对象的所有键,逐个转换后构建新对象。用Object.entries和Object.fromEntries组合会非常简洁:
function convertObjToCamelCase(obj) { // 把对象转成键值对数组 → 遍历转换每个键 → 再转回对象 return Object.fromEntries( Object.entries(obj).map(([key, value]) => [toCamelCase(key), value]) ); }
用你的示例测试一下:
const obj = { api_key: 1, is_auth: false }; const camelCaseObj = convertObjToCamelCase(obj); console.log(camelCaseObj); // 输出:{ apiKey: 1, isAuth: false }
进阶:处理嵌套对象/数组
如果你的对象里有嵌套的子对象或者数组(比如后端返回的复杂业务结构),可以把函数改成递归版本,确保所有层级的键都被转换:
function convertToCamelCaseRecursive(obj) { // 如果是数组,遍历每个元素递归处理 if (Array.isArray(obj)) { return obj.map(item => convertToCamelCaseRecursive(item)); } // 如果是对象(排除null),递归处理每个键值对 if (obj !== null && typeof obj === 'object') { return Object.fromEntries( Object.entries(obj).map(([key, value]) => [ toCamelCase(key), convertToCamelCaseRecursive(value) ]) ); } // 非对象/数组的原始类型直接返回 return obj; }
测试嵌套结构:
const nestedObj = { user_id: 123, user_details: { first_name: 'John', last_name: 'Doe', is_verified: true }, recent_orders: [ { order_id: 456, total_amount: 99.99 } ] }; console.log(convertToCamelCaseRecursive(nestedObj)); // 输出: // { // userId: 123, // userDetails: { firstName: 'John', lastName: 'Doe', isVerified: true }, // recentOrders: [ { orderId: 456, totalAmount: 99.99 } ] // }
关于「移除所有下划线并大写后续字母」的说明
其实我们的toCamelCase函数已经完全实现了这个需求——它会移除所有下划线,同时把下划线后面的首字母自动改成大写。如果只是单纯处理字符串,直接调用这个函数就可以完成目标。
内容的提问来源于stack exchange,提问作者Slava
相关产品推荐
相关产品推荐

