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

如何生成含完整12个月的数组?缺失月份数据自动补0

解决方案:生成含完整12个月的数组(缺失月份补0+月份名称替换)

核心思路

先建立月份数字与英文名称的映射表,再将原数组转换为以月份数字为键的快速查询对象,最后遍历全年12个月,逐个匹配原数据(无匹配则填0)并替换为英文月份名。

示例原数组与期望结果

原数组示例:

const originalData = [
  { categories: 3, data: 150 },
  { categories: 7, data: 200 },
  { categories: 10, data: 180 }
];

期望生成的完整数组:

[
  { categories: "January", data: 0 },
  { categories: "February", data: 0 },
  { categories: "March", data: 150 },
  { categories: "April", data: 0 },
  { categories: "May", data: 0 },
  { categories: "June", data: 0 },
  { categories: "July", data: 200 },
  { categories: "August", data: 0 },
  { categories: "September", data: 0 },
  { categories: "October", data: 180 },
  { categories: "November", data: 0 },
  { categories: "December", data: 0 }
]

JavaScript 实现代码

// 定义月份数字到英文名称的映射(索引1对应1月,匹配原数据的月份数字)
const monthMap = [
  null,
  "January", "February", "March", "April", "May", "June",
  "July", "August", "September", "October", "November", "December"
];

// 将原数组转换为键为月份数字的对象,用于快速查询
const dataLookup = originalData.reduce((acc, item) => {
  acc[item.categories] = item.data;
  return acc;
}, {});

// 生成完整的12个月数据
const fullYearData = Array.from({ length: 12 }, (_, idx) => {
  const monthNum = idx + 1;
  return {
    categories: monthMap[monthNum],
    data: dataLookup[monthNum] || 0
  };
});

console.log(fullYearData);

Python 实现代码

如果使用Python处理,逻辑一致:

original_data = [
    {"categories": 3, "data": 150},
    {"categories": 7, "data": 200},
    {"categories": 10, "data": 180}
]

month_map = [
    None, "January", "February", "March", "April", "May", "June",
    "July", "August", "September", "October", "November", "December"
]

# 构建月份-数据的查询字典
data_lookup = {item["categories"]: item["data"] for item in original_data}

# 生成完整数组
full_year_data = [
    {"categories": month_map[month_num], "data": data_lookup.get(month_num, 0)}
    for month_num in range(1, 13)
]

print(full_year_data)

逻辑说明

  1. 月份映射表:通过索引与月份数字一一对应,避免手动判断每个月份的名称。
  2. 查询对象/字典:将原数组转换为键值对结构,把查找数据的时间复杂度从O(n)降到O(1),提升效率。
  3. 遍历生成完整数组:通过循环覆盖1-12月,每个月份优先匹配原数据,无匹配则填充0,同时替换为英文名称,确保全年数据无遗漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:05:03