Javascript按键拆分JSON对象

ame*_*mil 1 javascript json

我有一种情况,我需要使用密钥拆分后端给定的Json对象。这是后端提供的JSON的示例。

{
    "answer": {
        "E2": "Tony Stark",
        "E3": "1",
        "E4": "2",
        "E6": "4",
        "E8": "9120",
        "E9": "01",
        "F1": "Marvel",
        "F2": "1",
        "F4": "2",
        "F6": "4",
        "F8": "9120",
        "F9": "01",
        "G1": "02",
        "G2": "02",
        "G3": "02",
        "H10": "Car"
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以将答案分为E,F,G和H部分吗?预期结果是

{
    "answer": [
        {
            "E2": "Tony Stark",
            "E3": "1",
            "E4": "2",
            "E6": "4",
            "E8": "9120",
            "E9": "01",
            "sectionName": "E"
        },
        {
            "F1": "Marvel",
            "F2": "1",
            "F4": "2",
            "F6": "4",
            "F8": "9120",
            "F9": "01",
            "sectionName": "F"
        },
        {
            "G1": "02",
            "G2": "02",
            "G3": "02",
            "sectionName": "G"
        },
        {
            "H10": "Car",
            "sectionName": "H"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

那里一定有一个天才可以解决我的问题。非常感谢。任何建议表示赞赏。

adi*_*iga 5

遍历entries对象的,并根据键的第一个字母将它们分组。如果组对象alrady以字母作为键,请对其进行更新。否则,将字母作为键添加到组对象。用于在输出中Object.values()获取answer所需的数组

const input={answer:{E2:"Tony Stark",E3:"1",E4:"2",E6:"4",E8:"9120",E9:"01",F1:"Marvel",F2:"1",F4:"2",F6:"4",F8:"9120",F9:"01",G1:"02",G2:"02",G3:"02",H10:"Car"}};

const group = {};

for (const [k, v] of Object.entries(input.answer)) {
  const sectionName = k.charAt(0);
  if (group[sectionName])
    group[sectionName][k] = v;
  else
    group[sectionName] = { sectionName, [k]: v };
}

const answer = Object.values(group)

console.log({ answer })
Run Code Online (Sandbox Code Playgroud)