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

如何将嵌套JavaScript对象属性名转为数组键并重构结构

对象结构转换解决方案

先明确你的需求:
原始嵌套对象:

const originalObj = { 
  "State Names": { 
    "State Cities": { 
      "Los Angeles": { 
        "about": "story", 
        "zip": "91721" 
      } 
    } 
  } 
};

想要转换后的目标结构:

{
  state: {
    city: [
      { "name": "Los Angeles", "about": "story", "zip": "91721" }
    ]
  }
}

你已经完成了前半部分的嵌套取值,差的就是把城市名称和对应的属性结合起来这一步。核心思路是:拿到城市名称后,要把它作为name字段,再和原对象里的about、zip合并成同一个对象,最后组装成目标结构。

完整的实现代码如下:

const o = { "State Names": { "State Cities": { "Los Angeles": { "about": "story", "zip": "91721" } } } };

// 逐层取出嵌套的城市对象集合
const stateCities = o["State Names"]["State Cities"];

// 遍历城市集合,把城市名和对应属性合并成目标格式的对象
const cityList = Object.keys(stateCities).map(cityName => ({
  name: cityName,
  ...stateCities[cityName] // 展开城市的about、zip等属性
}));

// 组装成最终的目标结构
const result = {
  state: {
    city: cityList
  }
};

console.log(result);

简单说下关键逻辑:

  • Object.keys(stateCities)会提取出所有城市名称的数组,这里就是["Los Angeles"]
  • 用map遍历每个城市名,创建新对象:把name设为当前城市名,再用扩展运算符...把原城市对象里的属性直接展开进来
  • 最后把处理好的城市数组放到city字段里,再包裹进state对象,就得到了你要的结构

而且这段代码是通用的——如果以后原始对象里有多个城市,它会自动把所有城市都转换成数组里的对象,不用额外修改代码~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:12:33