You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找并移除所有下划线并将下划线后首字母大写?以及如何将对象下划线键转换为驼峰式(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 18:47:49