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

NodeJS遍历JSON数据 按输入名称生成维度组合并构造key的方法

动态维度组合Key生成实现方案

完全可以通过数组遍历逻辑实现自适应任意长度的维度名称输入,不需要写固定层数的if判断,实现代码如下:


核心实现代码

function generateDimensionKey(uniqueMetricsArray, snsData) {
  // 将维度数组转为键值映射,避免重复遍历查找,提升效率
  const dimensionMap = Object.fromEntries(
    snsData.Trigger.Dimensions.map(item => [item.name, item.value])
  );
  // 按输入的维度名顺序筛选出存在的维度值
  const existDimensionValues = uniqueMetricsArray
    .map(dimName => dimensionMap[dimName])
    .filter(Boolean);
  // 有匹配维度就按下划线拼接,无匹配则返回指标名称
  return existDimensionValues.length > 0 
    ? existDimensionValues.join('_') 
    : snsData.Trigger.MetricName;
}

调用示例

结合你给出的样例数据调用函数:

// 输入的维度名列表
const uniqueMetricsArray = ['ApiId', 'ApiName', 'Stage'];
// 你的JSON数据源
const jsondata = {
  AlarmName: "Zabbix PY 5XX - By Stage QA",
  AlarmDescription: null,
  AWSAccountId: "123456",
  NewStateValue: "ALARM",
  NewStateReason: "Threshold Crossed: 1 out of the last 1 datapoints [1.0 (06/11/21 12:16:00)] was greater than or equal to the threshold (1.0) (minimum 1 datapoint for OK -> ALARM transition).",
  StateChangeTime: "2021-11-06T12:17:43.811+0000",
  Region: "Asia Pacific (Mumbai)",
  AlarmArn: "arn:aws:cloudwatch:ap-south-1:123456:alarm:Zabbix PY 5XX - By Stage QA",
  OldStateValue: "INSUFFICIENT_DATA",
  Trigger: {
    MetricName: "5XXError",
    Namespace: "AWS/ApiGateway",
    StatisticType: "Statistic",
    Statistic: "MINIMUM",
    Unit: null,
    Dimensions: [
      { value: "zabbixPy-API", name: "ApiName" },
      { value: "qa", name: "Stage" },
    ],
    Period: 60,
    EvaluationPeriods: 1,
    ComparisonOperator: "GreaterThanOrEqualToThreshold",
    Threshold: 1,
    TreatMissingData: "- TreatMissingData: missing",
    EvaluateLowSampleCountPercentile: "",
  },
};

const key = generateDimensionKey(uniqueMetricsArray, jsondata);
console.log(key); // 输出结果:zabbixPy-API_qa

实现优势

  • 自适应任意长度的输入维度名列表,后续新增维度不需要修改函数逻辑
  • 仅需遍历1次维度数组生成映射,后续查找复杂度为O(1),比多次调用find方法效率更高
  • 维度拼接顺序完全和输入的uniqueMetricsArray顺序一致,调整顺序不需要修改函数代码
  • 自动过滤不存在的维度,和你原有固定if判断的逻辑完全对齐

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:45:04