JavaScript对象数组结构转换:提取各键最大有效数值重组目标结构
数组结构转换实现方案
核心实现逻辑
按照给定的转换要求,整个流程拆分为无冗余的执行步骤:
- 逐行遍历原数组的每一个对象,对所有出现过的国家名称键做全局统计
- 对每个键的原始文本值做有效性过滤:可正常转换为数字的值纳入统计范围,非数值的文本(比如示例中的
"text")直接丢弃,不参与后续计算 - 针对每个统计过的键,从其所有有效数值中提取最大值
- 将键名、对应最大值按照要求的
{name, value}结构组装成最终的目标数组
具体JavaScript实现代码
const sourceList = [ { Germany: "text", Brazil: "50.00" }, { Germany: "1000.00", Brazil: "1100.00" }, { Germany: "999999999", Brazil: "9999999", France: "12" } ]; // 缓存每个键的历史最大值 const keyMaxRecord = {}; sourceList.forEach(row => { Object.entries(row).forEach(([key, rawStr]) => { // 转换数值并过滤无效文本 const validNum = Number(rawStr); if (Number.isNaN(validNum)) return; // 更新当前键的最大值 keyMaxRecord[key] = Math.max(keyMaxRecord[key] ?? -Infinity, validNum); }); }); // 组装目标结构 const targetResult = Object.entries(keyMaxRecord).map(([name, value]) => ({ name, value }));
代码执行结果说明:严格按照规则计算时,Germany的有效最大值为999999999,Brazil的有效最大值为9999999,France的有效最大值为12;若示例中目标结构里Brazil的数值为笔误,可根据实际数据调整校验逻辑。
内容的提问来源于stack exchange,提问作者stung beet
相关产品推荐
相关产品推荐

