【发布时间】:2020-11-25 17:47:09
【问题描述】:
对于一个带回家的练习,我必须编写一个函数来循环测试答案以检查答案是否包含某个字符串。
checkForPlagarism(submissionsArray, string) 接受一个数组和一个字符串。它应该遍历数组中的所有对象并检查它们是否包含一些字符串。但它似乎只在第一个循环后返回“false”。例如,当我将“Metaphase”作为字符串传递时,它返回“true”。如果我传入数组中任何其他问题的确切响应,即使它应该返回“true”,它也会返回“false”。这是我的 REPL: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。 -
顺便说一句,请更改函数名称以反映结果,例如
isPlagiarism。check...很好,但是你如何解释它的结果呢? -
@NinaScholz 如果由我决定,我会的。但这是一个带回家的学校作业,所以我不能更改函数名称。
-
@Pointy 就是这样!太感谢了。我想这更像是我从 Swift 那里学到的一个习惯。那,我通常不使用嵌套在循环中的 if-else。再次!谢谢!如果你给出官方答案,我会投票!
标签: javascript for-loop nested-loops