如何修改JavaScript代码将DynamoDB结果转为指定格式JSON
修改DynamoDB结果转换代码以生成目标JSON格式
你需要调整数据结构,把原来数组型的data改成单个键值对对象,同时新增max字段存储所有max值里的最大值。咱们一步步来修改:
问题拆解
原来的代码把每个食材和对应值放到了data数组的独立对象中,但目标格式要求data是一个单层对象,并且要额外添加所有max值里的最大值。另外注意原始的max值都是字符串类型,比较大小时需要先转成数字。
修改后的完整代码
var item = [ { "max": "0.575", "ingredients": "a" }, { "max": "10.25", "ingredients": "b" }, { "max": "98.5", "ingredients": "c" } ]; var valuesForChart = { data: {}, // 初始化为空对象,而非数组 max: "" }; // 遍历生成data的键值对,同时收集所有max数值用于计算最大值 const maxNumberList = []; item.forEach(function(subItem) { const ingredientName = subItem.ingredients; const levelValue = subItem.max; valuesForChart.data[ingredientName] = levelValue; maxNumberList.push(parseFloat(levelValue)); // 转数字方便比较大小 }); // 计算最大值并转回字符串,保持格式一致 valuesForChart.max = Math.max(...maxNumberList).toString(); console.log(valuesForChart);
输出验证
运行这段代码后,会得到你期望的格式:
{ "data": { "a": "0.575", "b": "10.25", "c": "98.5" }, "max":"98.5" }
额外提示
如果你的item数组可能为空,建议加个边界判断避免Math.max返回-Infinity的情况,比如:
if (maxNumberList.length > 0) { valuesForChart.max = Math.max(...maxNumberList).toString(); } else { valuesForChart.max = "0"; // 或者你需要的默认值 }
内容的提问来源于stack exchange,提问作者user3872094
相关产品推荐
相关产品推荐

