如何在 For 循环中使用嵌套的 If-Else 语句? [Javascript]
How Do I Use a Nested If-Else Statement within a For-Loop? [Javascript]
对于带回家的练习,我必须编写一个函数来遍历测试答案以检查答案是否包含某个字符串。
checkForPlagarism(submissionsArray, string) 接受一个数组和一个字符串。它应该遍历数组中的所有对象并检查它们是否包含一些字符串。但在第一个循环之后似乎只有 return "false"。例如,当我将“Metaphase”作为字符串传入时,它 returns “true”。如果我传入数组中任何其他问题的确切响应,它 return 是“假”,即使它应该 return “真”。这是我的回复:https://repl.it/@clamquarter/Take-Home-Science-Quiz#index.js
我做错了什么?
const submissions = [
{
question: 'What is the phase where chromosomes line up in mitosis?',
response: 'Metaphase',
isCorrect: true,
isEssayQuestion: false
}
//and so on...
]
function checkForPlagiarism(submissionsArray, string) {
for (let i = 0; i < submissionsArray.length; i++) {
if (submissionsArray[i].response.includes(string)) {
return true
}
else {
return false
}
}
}
“在 for 循环完成之前,您不应该 return false。” - @Pointy
Return 语句将退出 for 循环。这里发生的是你的循环检查 submissionsArray[0]
并评估为 true
或 false
并退出循环。 checkForPlagiarism
returns 任何 submissionsArray[0]
的计算结果。
要解决此问题,请删除您的 else 条件并在循环完成时让 checkForPlagiarism
return false
。
这是它的样子:
function checkForPlagiarism(submissionsArray, string) {
for (let i = 0; i < submissionsArray.length; i++) {
if (submissionsArray[i].response.includes(string)) {
return true
}
}
return false
}
对于带回家的练习,我必须编写一个函数来遍历测试答案以检查答案是否包含某个字符串。
checkForPlagarism(submissionsArray, string) 接受一个数组和一个字符串。它应该遍历数组中的所有对象并检查它们是否包含一些字符串。但在第一个循环之后似乎只有 return "false"。例如,当我将“Metaphase”作为字符串传入时,它 returns “true”。如果我传入数组中任何其他问题的确切响应,它 return 是“假”,即使它应该 return “真”。这是我的回复:https://repl.it/@clamquarter/Take-Home-Science-Quiz#index.js
我做错了什么?
const submissions = [
{
question: 'What is the phase where chromosomes line up in mitosis?',
response: 'Metaphase',
isCorrect: true,
isEssayQuestion: false
}
//and so on...
]
function checkForPlagiarism(submissionsArray, string) {
for (let i = 0; i < submissionsArray.length; i++) {
if (submissionsArray[i].response.includes(string)) {
return true
}
else {
return false
}
}
}
“在 for 循环完成之前,您不应该 return false。” - @Pointy
Return 语句将退出 for 循环。这里发生的是你的循环检查 submissionsArray[0]
并评估为 true
或 false
并退出循环。 checkForPlagiarism
returns 任何 submissionsArray[0]
的计算结果。
要解决此问题,请删除您的 else 条件并在循环完成时让 checkForPlagiarism
return false
。
这是它的样子:
function checkForPlagiarism(submissionsArray, string) {
for (let i = 0; i < submissionsArray.length; i++) {
if (submissionsArray[i].response.includes(string)) {
return true
}
}
return false
}