javascript - 如何将 if 语句转换为 for 循环

标签 javascript json loops

目前这并不是一个真正的问题,只是我正在寻找另一个解决方案。 当然,我必须有一种更聪明的方法来给每个学生写一个 if 问题,就像我在这里所做的那样来获取他们的成绩。

如果我想通过 for 循环获得相同的结果?我该如何继续这样做呢?有什么明智的建议吗?

var nameandgrades = {
    "students": [{
            "namn": "Klara",
            "grade": "A"
        },
        {
            "namn": "Andrea",
            "grade": "B"
        },
        {
            "namn": "Emil",
            "grade": "C"
        }
    ]
};

var klara = "Klara";
var andrea = "Andrea";
var emil = "Emil";

function getGrade() {
    var studentname = document.getElementById("studentname").value;

    if (studentname == klara) {
        document.getElementById("output").innerHTML = nameandgrades.students[0].grade + ' ';
    }

    if (studentname == andrea) {
        document.getElementById("output").innerHTML = nameandgrades.students[1].grade + ' ';
    }

    if (studentname == emil) {
        document.getElementById("output").innerHTML = nameandgrades.students[1].grade + ' ';
    }
}
<!DOCTYPE html>
<html lang="sv">

<head>
    <meta charset="utf-8">
    <title>json javascript</title>
</head>

<body>
    <h1> Write the students name and see what grade he/she has! </h1>
    <form>
    
        <!-- textbox -->
        <input type="text" id="studentname" value="Klara" placeholder="name of the student" />
        <br />
        <br>

        <!-- mouseclick -->
        <input type="button" value="visa" onclick="getGrade();" />
        <br />
        <br>

    </form>

    <div id="output"> </div>


</body>

</html>

非常感谢任何帮助!

干杯! //macgajver

最佳答案

您希望从姓名与输入中给出的姓名匹配的学生数组中获取该对象。

  • 将输入的值存储在变量中。
  • nameandgrades.students 使用 find() 并检查对象 name 属性是否与哪个输入值匹配。
  • 获得该对象后,获取其等级并输出。

其他一些提示是:

  • 在全局范围内声明 html 元素,这样您就不会在每次单击按钮时都获取它们。
  • 使用 const 来声明对象和 html 元素。
  • 在访问grade之前检查是否找到对象,否则会导致错误。

const input = document.getElementById("studentname");
const output = document.getElementById("output")
const nameandgrades = { "students": [{ "name": "Klara", "grade": "A" }, { "name": "Andrea", "grade": "B" }, { "name": "Emil", "grade": "C" } ] };
function showGrade() {
  let name = input.value
  let object = nameandgrades.students.find(x => x.name === name);
  let grade;
  if(object){
    grade = object.grade
  }
  output.innerHTML = grade || "Sorry student not found"
}
<h1> Write the students name and see what grade he/she has! </h1>
<form>


    <!-- textbox -->
    <input type="text" id="studentname" value="Klara" placeholder="name of the student" />
    <br />
    <br>

    <!-- mouseclick -->
    <input type="button" value="visa" onclick="showGrade();" />
    <br />
    <br>

</form>

<div id="output"> </div>

关于javascript - 如何将 if 语句转换为 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65307523/

相关文章:

javascript - 如何从 moment.unix() 将 moment 解析为特定时区

python - 在 python 中解析 JSON 时出错

javascript - 使用 Javascript 将 JSON 文件中的单个值返回到 HTML

bash - 在 Bash 循环中递增变量

javascript - 如何在分页中突出显示当前页码?

javascript - 与 AngularJs JavaScript 的异步特性作斗争

javascript - 有没有办法写入通过 Iframe 显示的外部 HTML 文件?

json - 每个避免数组的 Azure 数据工厂

javascript - 如果在迭代 javascript 循环时使用 "in"和 "="运算符有什么区别?

java - --i 和 i-- 的行为与++i 和 i++ 相同吗?