Мой цикл forEach в обратном порядке в моем словаре в javascript, почему?

В моей программе я получаю оценки от студентов, использующих и вычисляющих их оценки. Чтобы проверить, какую оценку они получают, я перечислил данные оценок в словаре, и я хочу проверить, больше ли моя оценка, чем определенная оценка, дайте им 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.info(key, dict[key]);
                /*if (sum>=key && (sum-key)<6 ){
                    tex = dict[key];
                    return tex;
                }*/
                if (sum > key){
                    tex = dict[key];
                    return tex;
                }
            });
        }

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

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

Связанный: Вводит ли ES6 четко определенный порядок перечисления свойств объекта?. В этом случае порядок ключей, возвращаемых через Object.keys, не определен четко, и если вам нужно рассчитывать на конкретный порядок, вы должны сами отсортировать массив перед его повторением.

CRice 09.10.2018 01:35

Я не думаю, что использование чисел в качестве ключей к объекту - лучший способ. Я бы использовал массив.

Adrian Brand 09.10.2018 01:57
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
373
2

Ответы 2

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

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.info(gradeCheck(88));

console.info(gradeCheck(75));

Поскольку объекты 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.info(tex);
            return tex;
        }
    }

} 

Другие вопросы по теме