You need to enable JavaScript to run this app. 如何将组织对象数组拆分重组为指定键值对结构的新数组
优惠活动
大模型
产品
解决方案
定价
更多

如何将组织对象数组拆分重组为指定键值对结构的新数组

问题描述

现有如下结构的对象数组:

organisationData = [
    {
            "id": -516538792,
            "label": "name",
            "value": "Apple",
            "key": "name"
        },
        {
            "id": -586565959,
            "label": "field",
            "value": "IT",
            "key": "field"
        },
        {
            "id": 2081552018,
            "label": "name",
            "value": "Microsoft",
            "key": "name"
        },
        {
            "id": -1094152060,
            "label": "field",
            "value": "IT",
            "key": "field"
        }
    ]

需要将其拆分聚合,得到如下格式的新数组:

organisations = [
    {
        "name": "Apple",
        "field": "IT"
    },
    {
        "name": "Microsoft",
        "field": "IT"
    }
]

当前编写的代码只能生成每个键值单独为一项的数组,无法按公司主体拆分聚合为对应的对象,代码如下:

let organisationData = [.....]

let organisations = [];

for (org of organisationsData) {
    _org = [];
    _org[org.key] = org.value;
    organisations.push(_org);
};
代码修改方案

你现有代码存在两个核心问题:

  • 每次循环都新建了一个容器,且错用了数组[],应该用对象{}存储单个公司的属性
  • 每遍历一项就直接推入结果数组,没有把同一家公司的name和field属性聚合到同一个对象中

可以按如下方式修改,适配你提供的按name、field成对排列的原始数据结构:

let organisationData = [/* 填入你的原始数据 */]
let organisations = [];
// 临时存储当前正在收集属性的公司对象
let currentOrg = {};

for (const org of organisationData) {
    if (org.key === 'name') {
        // 遇到新的公司名称,重置临时对象
        currentOrg = {};
        currentOrg.name = org.value;
    } else if (org.key === 'field') {
        // 补充当前公司的领域属性,收集完成后推入结果数组
        currentOrg.field = org.value;
        organisations.push(currentOrg);
    }
}

如果原始数据的排列顺序不固定,无法保证name在前field在后,可以采用按固定步长分组的更稳妥方案:

let organisations = [];
// 每两项为一组,对应一家公司的两个属性
for (let i = 0; i < organisationData.length; i += 2) {
    const currentOrg = {};
    // 分别给当前公司的两个属性赋值
    currentOrg[organisationData[i].key] = organisationData[i].value;
    currentOrg[organisationData[i+1].key] = organisationData[i+1].value;
    organisations.push(currentOrg);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 04:21:01