Мой цикл forEach в обратном порядке в моем словаре в JavaScript, почему? - PullRequest
0 голосов
/ 09 октября 2018

В моей программе я получаю оценки от учащихся, использующих и вычисляющих их оценки.чтобы проверить, какую оценку они получают, я перечислил данные оценок в словаре, и я хочу проверить, больше ли моя оценка, чем определенная оценка, дайте им A, если нет, то она продолжится, пока не найдет соответствующую оценку.Таким образом, я расположил объекты моего словаря так, чтобы они находились в диапазоне от самой высокой оценки до самой низкой, поэтому, как только он найдет подходящую остановку оценки и напечатает оценку для пользователя.по какой-то причине это цикл от объекта с самым низким ключом к ключу с самым высоким ключом, как бы это исправить?Цикл от первого ключа до последнего независимо от его значения.

var dict = {94: '"It is, A, excellent"', 90: '"It is, A-, great job"', 87: '"It is, B+, great"', 84: "It is, B, amazing", 80: "It is, B-, study little more", 77: "It is, C+, you could do better", 74: "It is, C", 70: "It is, C-", 67: "Is your grade, D+"}
 function gradeCheck(sum){
            var tex;
            Object.keys(dict).forEach( function(key){
                //console.log(key, dict[key]);
                /*if(sum>=key && (sum-key)<6 ){
                    tex = dict[key];
                    return tex;
                }*/
                if(sum > key){
                    tex = dict[key];
                    return tex;
                }
            });
        }

Я прокомментировал свой старый код детали.

Я надеюсь, что кто-то может помочь, Спасибо

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Поскольку объекты JS не сохраняют порядок вставки ключей.Используйте MAP вместо обычного объекта.

var dict = new Map();
dict.set(94, 'It is, A, excellent');
dict.set(90, 'It is, A-, great job');
dict.set(87, '"It is, B+, great"');

function gradeCheck(sum) {
    var tex;
    for (var [key, value] of dict) {
        if (sum > key) {
            tex = value;
            console.log(tex);
            return tex;
        }
    }

} 
0 голосов
/ 09 октября 2018

Использовать массив

var grades = [
  { grade: 94, message: 'It is, A, excellent' },
  { grade: 90, message: 'It is, A-, great job' },
  { grade: 87, message: 'It is, B+, great' },
  { grade: 84, message: 'It is, B, amazing' },
  { grade: 80, message: 'It is, B-, study little more' },
  { grade: 77, message: 'It is, C+, you could do better' },
  { grade: 74, message: 'It is, C' },
  { grade: 70, message: 'It is, C-' },
  { grade: 67, message: 'Is your grade, D+' }
];

function gradeCheck(sum) {
 return grades.find(g => g.grade < sum).message;
}

console.log(gradeCheck(88));

console.log(gradeCheck(75));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...