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

如何将给定Object Array转换为指定结构的目标数组?

数组结构转换实现

给定如下输入对象数组:

const input = [
    {"attributeGroup":"Compliance Information", "name":"specification", "value": "Medium"},
    {"attributeGroup":"Compliance Information", "name":"specification", "value": "High"},
    {"attributeGroup":"Compliance Information", "name":"complianceStatus", "value": "Pending"},
    {"attributeGroup":"Compliance Information", "name":"complianceStatus", "value": "Rejected"},
    {"attributeGroup":"Compliance Information", "name":"releasedDate", "value": "2023-08-30"},
    {"attributeGroup":"Compliance Information", "name":"releasedDate", "value":"2023-08-31"}
];

需要将其转换为以下结构的目标数组:

[{
    "ContextCode": "Compliance Information",
    "specification": "Medium",
    "complianceStatus": "Pending",
    "releasedDate": "2023-08-30"
},
{
    "ContextCode": "Compliance Information",
    "specification": "High",
    "complianceStatus": "Rejected",
    "releasedDate": "2023-08-31"
}]

解决方案

核心逻辑是先按字段名分组存储对应值,再根据值的数量批量构建目标对象:

function transformInput(input) {
    // 按name字段分组收集所有对应value
    const groupedValues = {};
    let contextCode = '';
    
    input.forEach(item => {
        contextCode = item.attributeGroup;
        if (!groupedValues[item.name]) {
            groupedValues[item.name] = [];
        }
        groupedValues[item.name].push(item.value);
    });

    // 获取目标对象的数量(取第一个字段的数组长度)
    const fieldNames = Object.keys(groupedValues);
    const resultLength = groupedValues[fieldNames[0]].length;
    const result = [];

    // 循环构建每个目标对象
    for (let i = 0; i < resultLength; i++) {
        const targetObj = { ContextCode: contextCode };
        fieldNames.forEach(field => {
            targetObj[field] = groupedValues[field][i];
        });
        result.push(targetObj);
    }

    return result;
}

// 执行转换并输出结果
const transformedResult = transformInput(input);
console.log(transformedResult);

代码说明

  1. 分组收集值:遍历输入数组,将每个name对应的value存入数组,同时记录统一的ContextCode值;
  2. 确定结果数量:通过分组后任意一个字段的数组长度,确定需要生成的目标对象总数;
  3. 构建目标对象:循环每个索引,为每个目标对象填充对应字段的第i个值,最终组成结果数组。

内容的提问来源于stack exchange,提问作者Abdul Manan Ali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:13:11