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

AngularJS中如何将多组键值对赋值给某一键并构造目标数组

解决方法:将对象数组转换为键值对集合并嵌入目标数组

嘿,我完全get到你的需求了——就是把源JSON里的对象数组,转成键值对形式的集合,再把这个集合放到另一个数组中某个对象的parentKey字段里作为值对吧?下面我用JavaScript给你写个清晰的示例,你可以直接套用或者调整:

步骤1:定义源数据

先把你提供的源数据整理成可测试的格式(补全了截断的部分):

const sourceJSON = {
  "Array": [
    { "key1": "id_001", "key2": "value2_001", "key3": "value3_001" },
    { "key1": "id_002", "key2": "value2_002", "key3": "value3_002" },
    { "key1": "id_003", "key2": "value2_003", "key3": "value3_003" }
  ]
};

步骤2:将对象数组转换为键值对集合

这里用Array.reduce()方法来实现转换,核心是选择一个字段作为键(比如示例里的key1),把每个对象对应到这个键下。分两种场景:

场景A:键值唯一(重复键直接覆盖)

如果你的key1值不会重复,或者重复时只需要保留最后一个对象,用这个版本:

// 转换为键值对集合,key1的值作为键,整个对象作为值
const keyValueMap = sourceJSON.Array.reduce((result, currentItem) => {
  result[currentItem.key1] = currentItem;
  return result;
}, {});

场景B:键值可能重复(重复键存为数组)

如果key1有重复,需要把同键的所有对象都保留,改成数组存储:

const keyValueMapWithDuplicates = sourceJSON.Array.reduce((result, currentItem) => {
  const key = currentItem.key1;
  // 如果键不存在,先初始化一个空数组
  if (!result[key]) {
    result[key] = [];
  }
  result[key].push(currentItem);
  return result;
}, {});

步骤3:构造目标数组

现在把转换好的键值对集合,赋值给目标数组中对象的parentKey:

// 目标数组,包含一个对象,parentKey的值就是我们的键值对集合
const targetArray = [
  {
    parentKey: keyValueMap, // 这里替换成keyValueMapWithDuplicates就能用场景B的结果
    // 你还可以添加其他需要的字段
    description: "这是包含键值对集合的对象"
  }
];

验证结果

打印目标数组看看最终结构:

console.log(JSON.stringify(targetArray, null, 2));

输出的JSON结构会是这样(场景A的结果):

[
  {
    "parentKey": {
      "id_001": {
        "key1": "id_001",
        "key2": "value2_001",
        "key3": "value3_001"
      },
      "id_002": {
        "key1": "id_002",
        "key2": "value2_002",
        "key3": "value3_002"
      },
      "id_003": {
        "key1": "id_003",
        "key2": "value2_003",
        "key3": "value3_003"
      }
    },
    "description": "这是包含键值对集合的对象"
  }
]

你可以根据自己的实际需求,调整用来作为键的字段(比如换成key2),或者修改集合的存储逻辑~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:34:29