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

如何将数组的每个索引转为小写,同时将数组内部元素转为大写?

解决方法:递归处理嵌套结构的键与值

首先我得先明确下你的需求——应该是要把数组中嵌套对象的所有键(包括多层嵌套的)转换为小写,同时把结构中的字符串类型元素转换为大写(毕竟数组的索引是数字,转小写没实际意义,结合你给的示例结构,重点应该是处理对象键和字符串值)。

下面用JavaScript实现这个逻辑,核心是用递归函数来处理多层嵌套的结构:

实现代码

function transformStructure(data) {
  // 处理数组:遍历每个元素递归处理
  if (Array.isArray(data)) {
    return data.map(item => transformStructure(item));
  }
  // 处理对象:遍历键值对转换
  if (typeof data === 'object' && data !== null) {
    const transformedObj = {};
    for (const key in data) {
      if (data.hasOwnProperty(key)) {
        // 键转小写
        const lowerKey = key.toLowerCase();
        const value = data[key];
        // 根据值的类型处理:字符串转大写,其他递归处理
        transformedObj[lowerKey] = typeof value === 'string' 
          ? value.toUpperCase() 
          : transformStructure(value);
      }
    }
    return transformedObj;
  }
  // 非对象非数组的非字符串类型,直接返回
  return data;
}

// 测试你的示例数据
const sampleData = [{ "abc": { "xyz": { "jpy": {} }}}];
const result = transformStructure(sampleData);
console.log(result);
// 输出:[{ "abc": { "xyz": { "jpy": {} }}}] (因为原键已经是小写,所以没变化)

// 测试带字符串值的情况
const testData = [{ "Abc": { "XyZ": { "JPY": "hello world", "num": 123 }}}];
const testResult = transformStructure(testData);
console.log(testResult);
// 输出:[{ "abc": { "xyz": { "jpy": "HELLO WORLD", "num": 123 }}}]

代码说明

  • 递归处理是关键:因为你的结构是多层嵌套的,递归能自动遍历到每一层的对象和数组;
  • 数组处理:用map遍历每个元素,对每个元素调用转换函数;
  • 对象处理:遍历每个键,先把键转小写,然后判断值的类型:如果是字符串就转大写,否则继续递归处理(比如嵌套对象或数组);
  • 边界处理:排除null(因为typeof null也是object),非对象/数组/字符串的类型直接返回原值。

如果你的需求是其他编程语言(比如Python),可以告诉我,我再给你对应实现~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:16:30