如何计算JavaScript对象中各属性数组的平均值?
计算JavaScript对象中各数组的平均值
方法一:基础遍历法
通过遍历对象属性键,逐个计算对应数组的总和与平均值,逻辑直观易懂:
let components = { co: [235, 465, 78], no: [409, 589, 98], nh3: [54, 76, 39] }; const averages = {}; for (const key in components) { const arr = components[key]; // 用reduce累加数组元素得到总和 const total = arr.reduce((accumulator, current) => accumulator + current, 0); // 总和除以数组长度得到平均值 averages[key] = total / arr.length; } console.log(averages); // 输出:{ co: 259.3333333333333, no: 365.3333333333333, nh3: 56.333333333333336 }
方法二:函数式简洁写法
利用Object.entries和Object.fromEntries结合数组方法,用更紧凑的代码完成计算,贴合现代JavaScript风格:
let components = { co: [235, 465, 78], no: [409, 589, 98], nh3: [54, 76, 39] }; const averages = Object.fromEntries( Object.entries(components).map(([key, arr]) => { const total = arr.reduce((acc, curr) => acc + curr, 0); return [key, total / arr.length]; }) ); console.log(averages);
额外优化:处理边界情况
如果数组可能为空(避免除以0报错),或者需要格式化小数位数,可以调整逻辑:
const averages = {}; for (const key in components) { const arr = components[key]; if (arr.length === 0) { averages[key] = 0; // 空数组默认值,可按需修改 continue; } const total = arr.reduce((acc, curr) => acc + curr, 0); // 保留2位小数并转为数字类型 averages[key] = Number((total / arr.length).toFixed(2)); } console.log(averages); // 输出:{ co: 259.33, no: 365.33, nh3: 56.33 }
内容的提问来源于stack exchange,提问作者junior
相关产品推荐
相关产品推荐

