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

如何将对象数组中所有键的首字母大写?现有代码未生效

问题解决:对象数组嵌套键首字母大写实现

你的代码存在几个问题,导致无法达到预期效果:

  • 使用key.toUpperCase()会把整个键转为全大写,而非仅首字母大写
  • 仅处理了单层对象,没有递归处理嵌套的子对象和数组内的对象
  • 未考虑输入为数组的情况,直接传入数组时_.transform无法正确遍历数组元素

以下是修正后的代码,可递归处理所有层级的对象和数组:

function capitalizeObjectKeys(item) {
  // 处理数组:遍历每个元素递归处理
  if (Array.isArray(item)) {
    return item.map(element => capitalizeObjectKeys(element));
  }
  // 处理对象:遍历每个键,首字母大写,递归处理值
  if (typeof item === 'object' && item !== null) {
    return _.transform(item, (result, val, key) => {
      // 首字母大写,其余字符保持原大小写
      const capitalizedKey = key.charAt(0).toUpperCase() + key.slice(1);
      result[capitalizedKey] = capitalizeObjectKeys(val);
    });
  }
  // 普通值直接返回
  return item;
}

代码说明:

  • 先判断输入是否为数组,若是则遍历每个元素并递归调用处理函数
  • 再判断是否为非空对象,通过_.transform遍历键,将键首字母大写,同时递归处理值,确保嵌套对象和数组都被处理
  • 数字、字符串、布尔值等普通类型的值直接返回

用你的示例对象测试该函数,即可得到预期的输出结果。

内容的提问来源于stack exchange,提问作者Tim Launders

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:21:25