這段代碼有什么問題?我嘗試使用陣列獲取標記并將陣列傳遞給函式引數并計算該函式的平均值。
const marks = [100,100,80];
var summ = 0;
function calculateGrade(){
for(let i=0; i<=marks.length;i ){
summ = summ marks[i];
var avg = (summ/marks.length);
}
if(avg<=59){
console.log('F');
}
else if(avg>=60 && avg<=69){
console.log('D');
}
else if(avg>=70 && avg<=79){
console.log('C');
}
else if(avg>=80 && avg<=89){
console.log('B');
}
else if(avg>=90 && avg<=100){
console.log('A');
}
}
console.log(calculateGrade(marks));
uj5u.com熱心網友回復:
const sum = marks.reduce((partialSum, a) => partialSum a, 0);
uj5u.com熱心網友回復:
const marks = [100, 100, 80];
var summ = 0;
//issue one (Tmarks were missing )
function calculateGrade(Tmarks) {
// issues 2 ( <= should be < )
for (let i = 0; i < Tmarks.length; i ) {
summ = Tmarks[i];
}
var avg = summ / Tmarks.length;
if (avg <= 59) {
console.log("F");
} else if (avg >= 60 && avg <= 69) {
console.log("D");
} else if (avg >= 70 && avg <= 79) {
console.log("C");
} else if (avg >= 80 && avg <= 89) {
console.log("B");
} else if (avg >= 90 && avg <= 100) {
console.log("A");
}
}
console.log(calculateGrade(marks));
以下是您的代碼中的問題
- 您沒有在函式定義中獲取引數
- 問題 2 ( <= 應該是 < )
uj5u.com熱心網友回復:
您剛剛在 for 回圈中添加了一個額外的=
i<=marks.length
代替
i<marks.length
因此,在計算總和和平均值時,會添加一個垃圾值。
uj5u.com熱心網友回復:
你很親密
const marks = [100, 100, 80];
function calculateGrade(marks) {
let summ = 0;
for (let i = 0; i < marks.length; i ) {
summ = marks[i];
}
const avg = summ / marks.length;
let grade = '';
if (avg < 59) {
grade = 'F';
} else if (avg <= 69) {
grade = 'D';
} else if (avg <= 79) {
grade = 'C';
} else if (avg <= 89) {
grade = 'B';
} else {
grade = 'A';
}
return grade;
}
console.log(calculateGrade(marks));
uj5u.com熱心網友回復:
您的代碼中有幾個錯誤。
1.
for(let i=0; i<=marks.length;i )
mark.length為 3。陣列索引從 0 開始。
常量標記 = [100,100,80];
index 0 is 100.
index 1 is 100.
index 2 is 80.
當您添加i<=marks.length時,這等于i<=3。
=在這里將運行額外的回圈回圈,這將回傳NaN,因為陣列中只有 3 個元素,并且陣列索引是基于 0 的。
2.
for(let i=0; i<=marks.length;i ){
summ = summ marks[i];
var avg = (summ/marks.length);
}
avg超出范圍。您已經在回圈內定義了avg并嘗試在回圈外訪問它。在回圈中宣告的任何內容都僅限于該回圈,并且在回圈外不可用。
3.
console.log(calculateGrade(marks));
您的calculateGrade()函式不接受任何引數。所以你不能將任何引數傳遞給這個函式。
4.
console.log(calculateGrade(marks));
由于calculateGrade()函式沒有回傳任何值,這將不列印任何內容。所以你不需要在 a 中呼叫它console.log();。
我已將您的代碼簡化如下。
const marksArr = [100, 100, 80];
calculateGrade(marksArr);
function calculateGrade(marks) {
console.log('calling calculateGrade(marks)...');
var avg = (marksArr.reduce(function(a, b) {
return a b;
}, 0)) / marksArr.length;
console.log('avg is', avg);
if (avg <= 59) {
console.log('Grade', 'F');
} else if (avg >= 60 && avg <= 69) {
console.log('Grade', 'D');
} else if (avg >= 70 && avg <= 79) {
console.log('Grade', 'C');
} else if (avg >= 80 && avg <= 89) {
console.log('Grade', 'B');
} else if (avg >= 90 && avg <= 100) {
console.log('Grade', 'A');
}
}
uj5u.com熱心網友回復:
` calculateGrade(){
let marks = [100,100,80];
let summ = 0;
let avg = 0;
for(let i = 0; i < marks.length; i ){
summ = summ marks[i];
avg = (summ/marks.length);
}
if(avg<=59){
console.log('F');
}
else if(avg>=60 && avg<=69){
console.log('D');
}
else if(avg>=70 && avg<=79){
console.log('C');
}
else if(avg>=80 && avg<=89){
console.log('B');
}
else if(avg>=90 && avg<=100){
console.log('A');
}
}`
> array start from 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/532063.html
上一篇:檢查陣列中是否有負數和重復數
