Я не знаю, что мой учитель просит от меня. Правильно ли я понял задание? - PullRequest
0 голосов
/ 25 июня 2019

Я выполнил задание, но я все еще в замешательстве, если я ясно понял, о чем меня спрашивает мой учитель. Могу ли я получить ваше мнение об этой вещи?

Я пробовал с двумя массивами for-loop, и когда я использую кнопку, связанную с функцией, кажется, что она работает. Но вопрос в том, правильно ли это. Мое школьное задание на шведском, поэтому несколько слов - это язык.

Это вопрос о задании:

Морган, учитель средней школы, нуждается в реестре, чтобы отслеживать оценки своих учеников. Предположим, у вас есть два массива, один с именем и один с рейтингом. Например: namn = ["Klara", "Andrea", "Emil", "Sarah", "Alicia", "Victor", "Thomas", "Robert"] с оценками: betyg = ["A", " B "," C "," A "," D "," C "," E "," E "]. Затем выполните функцию (getGrade), которая ищет имя и возвращает оценку (достаточно первого подходящего имени). Затем создайте страницу, которая тестирует и демонстрирует вашу новую функцию (автоматически при загрузке страницы или нажатием кнопки). Имена и рейтинги массивов могут быть глобальными переменными или, что немного лучше, локальными переменными, посылаемыми в качестве входных данных для функций.

<body>

  <input type="button" value="Click to get Student Name and Grade" onclick="getGrade()">
  <div id="student1"></div>
  <div id="student2"></div>
  <div id="student3"></div>
  <div id="student4"></div>
  <div id="student5"></div>
  <div id="student6"></div>
  <div id="student7"></div>
  <div id="student8"></div>


  <script>
    var namn = ["Klara", "Andrea", "Emil", "Sarah", "Alicia", "Victor", "Thomas", "Robert"];

    var betyg = ["A", "B", "C", "A", "D", "C", "E", "E"];

    function getGrade() {

      for (var i = 0; i < namn.length; i++) {
        if (namn[i] == namn[0]) {
          document.getElementById("student1").innerHTML += namn[i] + "<br/> Betyg: " + betyg[i];
        } else if (namn[i] == namn[1]) {
          document.getElementById("student2").innerHTML += namn[i] + "<br/> Betyg: " + betyg[i];;
        } else if (namn[i] == namn[2]) {
          document.getElementById("student3").innerHTML += namn[i] + "<br/> Betyg: " + betyg[i];;
        } else if (namn[i] == namn[3]) {
          document.getElementById("student4").innerHTML += namn[i] + "<br/> Betyg: " + betyg[i];;
        } else if (namn[i] == namn[4]) {
          document.getElementById("student5").innerHTML += namn[i] + "<br/> Betyg: " + betyg[i];;
        } else if (namn[i] == namn[5]) {
          document.getElementById("student6").innerHTML += namn[i] + "<br/> Betyg: " + betyg[i];;
        } else if (namn[i] == namn[6]) {
          document.getElementById("student7").innerHTML += namn[i] + "<br/> Betyg: " + betyg[i];;
        } else {
          document.getElementById("student8").innerHTML += namn[i] + "<br/> Betyg: " + betyg[i];;
        }

      }
    }
  </script>

Спасибо за ваш отзыв!

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

Я не понял весь вопрос и почему он представлен в двух отдельных массивах. И я не знаю, какие инструменты вы можете использовать (так как это задание), но в двух словах вам нужно что-то вроде этого

var namn = ['Klara', 'Andrea', 'Emil', 'Sarah', 'Alicia', 'Victor', 'Thomas', 'Robert'];

var betyg = ['A', 'B', 'C', 'A', 'D', 'C', 'E', 'E'];
var dict = {};
for (var i = 0; i < namn.length; i++) {
  dict[namn[i].toLowerCase()] = betyg[i];
}

function getGrade(name) {
  return dict[name.toLowerCase()] || undefined;
}
var $app = document.body;
var input = document.createElement('input');
input.type = 'text';
var button = document.createElement('button');
var ul = document.createElement('ul');
button.innerText = 'Get Grade';
button.addEventListener('click', function() {
var grade = getGrade(input.value)
  if (grade) {
    var li = document.createElement('li');
    li.innerText = input.value + ' grade is: ' + grade;
    ul.appendChild(li);
  }
});

$app.appendChild(input);
$app.appendChild(button);
var div = document.createElement('div');
div.appendChild(ul);
$app.appendChild(div);

Я не сделал так много рефакторов (например, создание элемента или других вещей);

Если оценка учащегося ведется по индексу (не может найти лучшего слова) с массивом имен, сначала вы можете создать Объект (пары ключ-значение), а затем просто получить оценку, передавая имя учащегося. Остальное просто помещает результат в HTML.

Я также добавляю данные для получения имени и, нажимая на кнопку, создается список.

Если вы хотите провести рефакторинг своего решения, вы можете использовать что-то такое:

var namn = ["Klara", "Andrea", "Emil", "Sarah", "Alicia", "Victor", "Thomas", "Robert"];

var betyg = ["A", "B", "C", "A", "D", "C", "E", "E"];

function getGrade() {
    for (var i=1; i<=namn.length; i++) {
      document.getElementById('student' + i ).innerText = namn[i-1] + ' Betyg' + betyg[i-1]
    }
} 
0 голосов
/ 25 июня 2019

Насколько я понимаю, задание требует от вас получить оценку X (имя).

getGrade должен вернуть оценку X.

X может быть из input text или чего-то еще.

getGrade также должен принимать параметр.

В основном,

var grade = getGrade('Klara');

function getGrade(name) {
   var grade = ...
   return grade;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...