Node.js环境AWS Lambda中不使用JQ如何获取Dimensions数组长度做条件判断
解决方案
Node.js原生支持获取数组长度,不需要借助JQ等额外工具,在AWS Lambda的Node.js运行环境中可以直接使用数组的length属性实现你的需求。
方案1:按数组长度判断赋值
直接通过Dimensions.length获取数组元素数量,对应你的需求编写条件判断即可:
// 先兼容处理数组不存在的异常场景 const dimensions = sns?.Trigger?.Dimensions || []; let sns_DimensionsValue_ApiName; let sns_DimensionsValue_StageName; // 数组长度≥1时取第一个元素 if (dimensions.length >= 1) { sns_DimensionsValue_ApiName = dimensions[0].value; } // 数组长度≥2时取第二个元素 if (dimensions.length >= 2) { sns_DimensionsValue_StageName = dimensions[1].value; }
方案2:按name字段匹配取值(更稳妥)
不同类型的CloudWatch指标的Dimensions元素顺序可能发生变化,按name字段匹配取值无需关心数组长度和元素顺序,兼容性更强:
const dimensions = sns?.Trigger?.Dimensions || []; let sns_DimensionsValue_ApiName; let sns_DimensionsValue_StageName; for (const item of dimensions) { switch(item.name) { case 'ApiName': sns_DimensionsValue_ApiName = item.value; break; case 'Stage': sns_DimensionsValue_StageName = item.value; break; // 后续有其他维度可以直接扩展 } }
低版本Node.js兼容说明
如果你使用的Lambda Node.js runtime版本低于14,不支持可选链操作符?.,可以将数组声明替换为以下写法:
const dimensions = (sns && sns.Trigger && sns.Trigger.Dimensions) || [];
内容的提问来源于stack exchange,提问作者user630702
相关产品推荐
相关产品推荐

