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

如何用JavaScript、Ramda、TypeScript将对象camelCase键转为snake_case

将camelCase键的对象转换为snake_case键的对象

你已经实现了单个字符串的camelCase转snakeCase函数,接下来只需要遍历对象的所有键,对每个键应用这个转换函数,再重新构建一个新对象即可。

基础版本(适用于扁平对象)

直接利用Object.entries和Object.fromEntries快速处理:

const camelToSnakeCase = str => str.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);

// 转换对象键的核心函数
const convertToSnakeCaseObj = obj => {
  return Object.fromEntries(
    Object.entries(obj).map(([key, value]) => [camelToSnakeCase(key), value])
  );
};

// 测试示例
const camelCaseObj = {
  "studentName": "ABC",
  "studentId": "12345",
  "age": 18,
  "submittedAt": "xxxxxx"
};

const snakeCaseObj = convertToSnakeCaseObj(camelCaseObj);
console.log(snakeCaseObj);
// 输出:{ student_name: 'ABC', student_id: '12345', age: 18, submitted_at: 'xxxxxx' }

进阶版本(支持嵌套对象/数组)

如果你的对象包含嵌套对象或者数组,需要添加递归逻辑处理每个层级的键:

const camelToSnakeCase = str => str.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);

const convertToSnakeCaseObj = obj => {
  // 处理数组:递归转换数组中的每个元素
  if (Array.isArray(obj)) {
    return obj.map(item => convertToSnakeCaseObj(item));
  }
  // 处理对象:递归转换对象的每个键和值
  if (obj && typeof obj === 'object') {
    return Object.fromEntries(
      Object.entries(obj).map(([key, value]) => [
        camelToSnakeCase(key),
        convertToSnakeCaseObj(value)
      ])
    );
  }
  // 非对象/数组类型直接返回原值
  return obj;
};

// 测试嵌套对象示例
const nestedCamelObj = {
  studentName: "ABC",
  studentId: "12345",
  age: 18,
  submittedAt: "xxxxxx",
  courseInfo: {
    courseName: "Math",
    courseCode: "MATH101"
  },
  scores: [
    { subjectName: "English", score: 90 },
    { subjectName: "Science", score: 85 }
  ]
};

const nestedSnakeObj = convertToSnakeCaseObj(nestedCamelObj);
console.log(nestedSnakeObj);

简单原理说明

  • Object.entries(obj):把对象拆解成[键, 值]格式的数组,方便遍历操作。
  • map(([key, value]) => [...]):遍历每个键值对,用你写的函数转换键名,保留原始值。
  • Object.fromEntries(...):把处理后的键值对数组重新组装成对象。
  • 递归逻辑:遇到数组或嵌套对象时,重复执行转换逻辑,确保所有层级的键都被处理。

内容的提问来源于stack exchange,提问作者franco phong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:56:39