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

如何移除JavaScript对象外层键并转为子对象的id属性

问题描述

我有一个如下所示的JavaScript对象:

{
    "xx2b": {
        "county": "Baringo",
        "town": "Kabarnet",
        "saccoRegistration": "BO2/08/009",
        "saccoName": "Baringo2"
    },
    "QQDa": {
        "saccoRegistration": "Ba/09/009",
        "town": "Mogotio",
        "county": "Baringo",
        "saccoName": "Baringo1"
    }
}

我希望将其转换为移除每个子对象的外层键,并将该键作为id属性添加到对应子对象中。注意:你给出的示例外层用大括号包裹多个对象是无效JSON结构,正确结构应为数组,目标格式如下:

[
    {
        "id": "xx2b",
        "county": "Baringo",
        "town": "Kabarnet",
        "saccoRegistration": "BO2/08/009",
        "saccoName": "Baringo2"
    },
    {  
        "id": "QQDa",
        "saccoRegistration": "Ba/09/009",
        "town": "Mogotio",
        "county": "Baringo",
        "saccoName": "Baringo1"
    }
]
解决方案

可以用JavaScript的Object.entries()结合map()方法快速实现转换:

// 原始对象
const originalObj = {
    "xx2b": {
        "county": "Baringo",
        "town": "Kabarnet",
        "saccoRegistration": "BO2/08/009",
        "saccoName": "Baringo2"
    },
    "QQDa": {
        "saccoRegistration": "Ba/09/009",
        "town": "Mogotio",
        "county": "Baringo",
        "saccoName": "Baringo1"
    }
};

// 转换逻辑
const transformedArray = Object.entries(originalObj).map(([id, item]) => ({
    id,
    ...item
}));

console.log(transformedArray);

代码说明

  • Object.entries(originalObj):把原始对象拆成键值对数组,每一项格式为[外层键, 子对象],比如["xx2b", {...}]。
  • map(([id, item]) => {...}):遍历键值对数组,解构出id(原外层键)和item(子对象),返回一个新对象,合并id属性和子对象的所有属性。
  • 扩展运算符...item直接把子对象的所有属性复制到新对象里,不用手动逐个添加属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:55:40