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

如何修改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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:59:43