JavaScript数组内数值求平均及3组答案对应值生成8个平均值
嘿,这两个计算需求不难,我给你写好代码并解释清楚,直接能用:
1. 计算单个数组的平均值
这个是基础操作,我写了个通用函数,还加了数值校验,避免遇到非数字或者空数组时出问题:
function calculateArrayAverage(arr) { // 先过滤掉非有效数值,防止NaN搞砸计算 const validNumbers = arr.filter(item => typeof item === 'number' && !isNaN(item)); // 空数组的话返回0,你也可以改成返回null或者抛出错误,看你需求 if (validNumbers.length === 0) return 0; // 求和再除以元素个数 const total = validNumbers.reduce((accumulator, current) => accumulator + current, 0); return total / validNumbers.length; } // 测试一下 const sampleArray = [5, 10, 15, 20]; console.log(calculateArrayAverage(sampleArray)); // 输出12.5
2. 3组对应位置数值求平均(得到8个结果)
假设你的3组数据都是长度为8的数组,我们直接遍历每个索引位置,把三组对应位置的数取出来求平均就行,同样加了校验逻辑:
function calculateGroupedPositionAverages(group1, group2, group3) { // 先检查三组数据是不是都有8个元素 if (!(group1.length === 8 && group2.length === 8 && group3.length === 8)) { throw new Error('每组数据必须包含8个数值哦!'); } const averagedResults = []; for (let i = 0; i < 8; i++) { // 取出当前位置的三个数,过滤掉无效数值 const currentNums = [group1[i], group2[i], group3[i]].filter(num => typeof num === 'number' && !isNaN(num)); // 计算当前位置的平均值,没有有效数就返回0 const avg = currentNums.length === 0 ? 0 : currentNums.reduce((a, b) => a + b, 0) / currentNums.length; averagedResults.push(avg); } return averagedResults; } // 示例用法 const groupX = [10, 20, 30, 40, 50, 60, 70, 80]; const groupY = [15, 25, 35, 45, 55, 65, 75, 85]; const groupZ = [20, 30, 40, 50, 60, 70, 80, 90]; console.log(calculateGroupedPositionAverages(groupX, groupY, groupZ)); // 输出: [15, 25, 35, 45, 55, 65, 75, 85]
如果你的3组数据结构不是这样(比如是嵌套的二维数组),可以告诉我具体结构,我再调整代码~
内容的提问来源于stack exchange,提问作者Nostandby
相关产品推荐
相关产品推荐

