如何計算這樣一個陣列的總體平均值:示例陣列:
[[80, 90, 70], [70,80,60],[90,100,80]]
我現在正在嘗試什么
for (let i = 0; i < grades.length; i ) {
for (let y = 0; y < grades[i].length; y ) {
lastTotalScore = grades[i[y]];
lastAverageScore = lastTotalScore / grades[i].length;
overallTotalScore = lastAverageScore;
overallAverageScore = overallTotalScore / grades.length;
}
}
謝謝
uj5u.com熱心網友回復:
flatten陣列,然后reduce將元素相加,然后除以展平陣列的長度。
const arr = [
[80, 90, 70],
[70, 80, 60],
[90, 100, 80]
];
// Flatten the nested arrays
const flat = arr.flat();
// `reduce` over the numbers, and then divide
// by the number of elements in the array
const avg = flat.reduce((acc, c) => {
return acc c;
}, 0) / flat.length;
console.log(avg);
uj5u.com熱心網友回復:
計算所有數字的總數。除以總數的長度。
作業樣本
const grades = [[80, 90, 70], [70, 80, 60], [90, 100, 80]];
let lastTotalScore = 0;
let length = 0;
for (let i = 0; i < grades.length; i ) {
length = grades[i].length;
for (let y = 0; y < grades[i].length; y ) {
lastTotalScore = grades[i][y];
}
}
console.log(`Average = ${lastTotalScore / length}`);
要么
將二維陣列轉換為線性結構,使用Array.flat回圈Array.reduce并除以其長度來計算其總和。
作業樣本
const grades = [[80, 90, 70], [70, 80, 60], [90, 100, 80]];
const flatGrade = grades.flat();
const sum = flatGrade.reduce((acc, curr) => acc curr, 0);
console.log(`Average = ${sum / flatGrade.length}`);
uj5u.com熱心網友回復:
這也行。使用flat和reduce。
const input = [
[80, 90, 70],
[70, 80, 60],
[90, 100, 80],
];
const { sum, count } = input.flat().reduce(
(prev, curr) => {
prev.sum = curr;
prev.count = 1;
return prev;
},
{ sum: 0, count: 0 }
);
console.log(sum / count);
uj5u.com熱心網友回復:
正如其他一些人所建議的那樣,展平陣列可以很好地解決問題。我會考慮的唯一額外的事情是將代碼包裝成一個函式,然后可以重復使用,以保持DRY。
const someArray = [[80, 90, 70], [70, 80, 60], [90, 100, 80]];
function getAverage(arr) {
const oneArr = arr.flat();
const avg = oneArr.reduce((sum, value) => sum = value) / oneArr.length;
return avg;
}
console.log(`The average grade is: ${getAverage(someArray)}.`);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/429100.html
標籤:javascript 数组 平均的
