如何将一组提交的测验答案与 javascript 中的一组正确答案进行比较

How to compare an array of submitted quiz answers with an array of correct answers in javascript

我制作了一个多项选择测验。有些问题只有一个正确答案(使用无线电输入),其他问题有多个正确答案(复选框)。

当用户提交测验时,我会收集所有选中的单选框和复选框,并将答案的 id 推送到一个指向服务器的数组。它看起来像这样:

userAnswers = [ '1c', '2d', '3a', '3b', '3c', '3d', '4b', '5c', '5d', '6d', '7c', '7d' ]

在服务器上我有一个包含所有正确答案的数组。

correctAnswers = [ '1c', '2d', '3b', '3d', '4b', '5a', '5d', '6d', '7c', '7d' ]

我试过使用下划线的 _.difference 函数来比较数组,但这并没有给我一个完整的比较。

任何人都可以帮我设计一种给这些测验打分的方法吗?我认为问题是有些问题有多个答案,所以从技术上讲,有人可以勾选所有 4 个复选框或只勾选一个,这使得比较它们变得更加困难。

也许使用数组不是最好的方法,欢迎任何建议!

Maybe using arrays isn't the best way to do this

是的,您确实应该为此使用适当的数据结构:

answers = [
  ['c'], // 1
  ['d'], // 2
  ['a', 'b', 'c', 'd'], // 3
  ['b'], // 4
  ['c', 'd'], // 5
  ['d'], // 6
  ['c', 'd'] // 7
]

您还可以为 "named" 个问题使用一个对象(而不是为它们编制索引),并且可能会删除单选题的数组包装器,但我赞成使用数组,因为它们在这里很简单。

如果您想使用原始格式作为输入(例如,因为它更容易输入或您的服务器不支持嵌套 URL 查询参数),您可以轻松地将其转换为嵌套数组。

然后将结果与正确答案逐个问题进行比较应该是微不足道的。