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

JavaScript:修改嵌套数组中所有对象的键名

解决嵌套对象的键名转换问题

这事儿用递归处理最靠谱,毕竟你的嵌套层级是不确定的,递归能一层层钻进去搞定每一层的键名转换。我给你写个直接能用的函数:

// 定义递归转换函数
function transformPackage(pkg) {
  // 提取原对象的属性,children是可选字段
  const { id, name, children } = pkg;
  // 构建转换后的基础对象
  const transformed = {
    key: id,
    title: name
  };
  // 如果存在children,递归处理这个子对象
  if (children) {
    transformed.children = transformPackage(children);
  }
  return transformed;
}

// 处理整个原数组
const transformedPackages = packages.map(pkg => transformPackage(pkg));

// 可以用console.log查看转换结果
console.log(transformedPackages);

代码说明:

  • transformPackage 函数负责处理单个对象:把id替换成key,name替换成title,然后检查是否有children属性,有就递归调用自身处理子对象。
  • 用数组的map方法遍历原数组,对每个元素应用转换函数,就能得到全层级转换后的新数组。

拿你给的原数组测试,转换后第一个元素就是你想要的格式:

{
  key: '641a1690-6c8b-4ada-ae97-8d82cc4fe7a3',
  title: 'com.sample',
  children: {
    key: 'd7384f60-e4ab-4a86-8e2e-0f66cc32f',
    title: 'child.computer.com',
    children: {
      key: 'e4ab-4a86-0f66cc32f560',
      title: 'child.com'
    }
  }
}

要是你的children偶尔会是数组(虽然你例子里是单个对象,但提前做个兼容),只要把递归部分改成children.map(transformPackage)就行,这样就能处理子数组的情况了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 18:22:57