我不知道老师在问我什么。我是否正确理解作业?

时间:2019-06-25 06:41:04

标签: javascript arrays for-loop

我已经完成了作业,但是如果我清楚地理解了老师对我的要求,我仍然会感到困惑。我可以请你接受这件事吗?

我尝试了两个数组,用于for循环,当我使用与函数连接的按钮时,它似乎正在工作。但是问题是,是否正确。我的学校作业是瑞典语,所以这就是为什么几个单词是该语言的原因。

这是作业问题:

高中老师摩根(Morgan)需要注册,以跟踪学生的成绩。假设您有两个数组,一个带有名称,一个带有评级。例如: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 :(得分:0)

据我了解,该作业要求您获得X(姓名)的等级。

getGrade应该返回X的等级。

X可以来自input text或其他任何东西。

getGrade也应接受一个参数。

基本上

var grade = getGrade('Klara');

function getGrade(name) {
   var grade = ...
   return grade;
}

答案 1 :(得分:0)

我不明白整个问题以及为什么要在两个单独的数组中提供它。 而且我不知道可以使用哪种工具(因为这是一项任务),但总的来说,您需要这样的东西

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]
    }
}