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

TypeScript JSON操作:为父节点添加子节点属性求和值

给父级对象添加子数组月份属性求和值的解决方案

首先得说句实在的:用正则处理JSON真不是个靠谱的选择——JSON的结构灵活多变,空格、键顺序、嵌套内容都可能让正则失效。相比之下,直接解析成对象用代码计算才是稳当的做法。先给你推荐这个常规方案,再聊聊正则的思路(但真心不建议用)。

推荐方案:直接操作对象计算求和

下面是针对你的需求写的TypeScript代码,逻辑清晰还容易维护:

const oldArr = [{ 
  "careerLevel": "Associate", 
  "careerLevels": [ 
    { "201609": 21, "201610": 22, "careerID": "10000120" }, 
    { "201609": 31, "201610": 32, "careerID": "10000130" }
  ]
}];

const newArr = oldArr.map(parentItem => {
  // 遍历子数组,累加每个月份的数值
  const monthTotals = parentItem.careerLevels.reduce((acc, childItem) => {
    // 只处理6位数字的月份键
    Object.keys(childItem).forEach(key => {
      if (/^\d{6}$/.test(key)) {
        acc[key] = (acc[key] || 0) + childItem[key as keyof typeof childItem];
      }
    });
    return acc;
  }, {} as Record<string, number>);

  // 把求和结果和原父对象合并,得到目标结构
  return { ...monthTotals, ...parentItem };
});

console.log(newArr);

这段代码的核心逻辑:

  • 用map遍历原数组里的每个父对象
  • 用reduce遍历careerLevels子数组,逐个累加每个月份键对应的数值
  • 用扩展运算符把求和结果和原父对象合并,保证最终结构符合你的要求

关于用正则实现的思路(仅作参考,不推荐)

如果你坚持想用正则处理,那只能先把JSON转成字符串,再做匹配、求和、替换操作。但这个方法非常脆弱,只能适配你当前的特定JSON结构,一旦结构有变化(比如键顺序调整、出现嵌套内容)就会出错。

给你写个针对当前结构的示例代码:

const oldJson = JSON.stringify(oldArr);
// 提取所有月份键和对应数值
const monthMatches = oldJson.match(/"(\d{6})": (\d+)/g);
const sumMap: Record<string, number> = {};

if (monthMatches) {
  monthMatches.forEach(match => {
    const [, monthKey, valueStr] = match.match(/"(\d{6})": (\d+)/)!;
    sumMap[monthKey] = (sumMap[monthKey] || 0) + parseInt(valueStr, 10);
  });
}

// 把求和结果拼成JSON格式的字符串片段
const sumStr = Object.entries(sumMap)
  .map(([key, value]) => `"${key}": ${value}`)
  .join(', ');

// 把求和片段插入到父对象的开头(匹配"careerLevel"的位置)
const newJson = oldJson.replace(/{ "/, `{ ${sumStr}, "/`);
const newArr = JSON.parse(newJson);

console.log(newArr);

正则方案的局限性:

  • 只能适配你当前的JSON键顺序,如果careerLevel不在父对象的第一个位置,替换逻辑直接失效
  • 如果JSON里有其他6位数字的键,或者字符串内容里包含类似"201609"的文本,会导致求和错误
  • 无法处理更深层次的嵌套结构

所以还是那句话,优先选择直接操作对象的方案,靠谱得多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:32:47