2017-02-27 6 views
3

1. Erstellen Sie eine Funktion toLetterGrade, die ein Array von Prozentsätzen verwendet und ein Array entsprechender Zeichen zurückgibt. Zum Beispiel:JavaScript: Numerische Note zu Letter Note

toLetterGrade([90,80,55,85]); //returns ["A","A-","C","A"]

2. eine Funktion toGradePoints erstellen, die eine entsprechende Anordnung von Noten Punkten eine Anordnung von Buchstabegrade und gibt nimmt. Zum Beispiel:

toGradePoints(["A","A-","C","A"]); //returns [4.0,3.7,2.0,4.0]

3. Erstellen einer Funktion GPA, die ein Array von Prozentsätzen nimmt und gibt die entsprechenden Notendurchschnitt.

Ich versuche, Nummer 1 zu tun, und das ist der Code, den ich bisher habe, aber es gibt mir nur die Buchstabenklasse für die letzte Nummer im Array. Was mache ich falsch?

var arr 

function toLetterGrade(arr) { 
    for (i = 0; i < arr.length; i++) { 
     if (arr[i] >= 85) { 
      textG = "A"; 
     } else if (arr[i] >= 80) { 
      textG = "A-"; 
     } else if (arr[i] >= 75) { 
      textG = "B+"; 
     } else if (arr[i] >= 70) { 
      textG = "B"; 
     } else if (arr[i] >= 65) { 
      textG = "B-"; 
     } else if (arr[i] >= 60) { 
      textG = "C+"; 
     } else if (arr[i] >= 55) { 
      textG = "C"; 
     } else if (arr[i] >= 50) { 
      textG = "D"; 
     } else { 
      textG = "F"; 
     } 
    } 
    return textG; 
} 

document.write(toLetterGrade([90, 80, 70])) 

Ausgang ist B.

+0

fügen Sie bitte wo Sie die Zahlen für die zweite Frage zu bekommen. –

Antwort

0

Sie die Klasse einer Variablen zugewiesen und dann mit jeder Iteration zu überschreiben.

Versuch textG.push (‚A‘) anstelle

1

Sie Ihre Variable mit jedem Zyklus der Schleife zu überschreiben, das ist, warum Sie nur eine bekommen - die letzte Klasse.

Ich empfehle Ihnen, eine leere Array-Variable zu verwenden, um Ergebnisse zu speichern.

Mit jeder Schleife werden Sie der textG Variable eine neue Klasse zuweisen und dann in das result Array schieben. Die textG Variable wird mit jeder Schleife textG = '' zurückgesetzt, so dass kein Risiko besteht, Ergebnisse zu duplizieren/überschreiben.

Nach allen Zyklen der for Schleife wird das result Array zurückgegeben.

function toLetterGrade(arr) { 
 
    var textG = ''; 
 
    var result = []; 
 
    for (i = 0; i < arr.length; i++) { 
 
    textG = ''; 
 
    if (arr[i] >= 85) { 
 
     textG = "A"; 
 
    } else if (arr[i] >= 80) { 
 
     textG = "A-"; 
 
    } else if (arr[i] >= 75) { 
 
     textG = "B+"; 
 
    } else if (arr[i] >= 70) { 
 
     textG = "B"; 
 
    } else if (arr[i] >= 65) { 
 
     textG = "B-"; 
 
    } else if (arr[i] >= 60) { 
 
     textG = "C+"; 
 
    } else if (arr[i] >= 55) { 
 
     textG = "C"; 
 
    } else if (arr[i] >= 50) { 
 
     textG = "D"; 
 
    } else { 
 
     textG = "F"; 
 
    } 
 
    result.push(textG); 
 
    } 
 
    return result; 
 
} 
 

 
document.write(toLetterGrade([90, 80, 70]))

0

Sie sind bei jeder Iteration Ihren Rückgabewert überschrieben wird.

Versuchen Sie, ein Array zu erstellen, und fügen Sie die Lösung dem Array hinzu.

var solutionArr = [];

solutionArr.push("A");

jsfiddle

0

Für den ersten Teil können Sie ein Objekt verwenden, und die Schlüssel für die gewünschte Klasse wiederholen.

function getGrade(p) { 
 
    var grade = 'F'; 
 
    Object.keys(grades).some(function (k) { 
 
     if (p >= grades[k]) { 
 
      grade = k; 
 
      return true; 
 
     } 
 
    }); 
 
    return grade 
 
} 
 

 
var grades = { A: 85, 'A-': 80, B: 70, 'B-': 65, 'C+': 60, C: 55, D: 50, F: '' } 
 

 
console.log([90, 80, 55, 85].map(getGrade));
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

@dv, bitte warum hinzufügen. –

+0

Jemand wurde gerade wütend und dv jeden Eintrag. Übrigens ist es ziemlich sinnlos, solche modernen Lösungen wie 'Object.keys' zu verwenden, da OP nicht einmal in der Lage ist, die richtigen Bedingungen zu schaffen. –

+1

auch wenn op tatsächlich nicht in der lage ist, die idee zu bekommen, ich denke es ist notwendig eine lösung mit einigen fortgeschrittenen funktionen zu schreiben. das serielle dv kann eine Agenda haben, die versteckt und daher nur destruktiv ist. –

Verwandte Themen