我需要一个非常简单的知识检查'这应该将选定的答案与正确答案进行比较。我将正确的答案放入一个数组中,并将所选答案放入另一个数组中:
$(".kc_submit_1").click(function () {
var correctAnswers = ['true','true','true','true','true'];
var allAnswers = [];
$('.kc_answer').each(function() {
allAnswers.push($(this).val());
});
if (allAnswers==correctAnswers) {
alert ('Yahtzee');
};
})
问题是我从未得到过Yahtzee。 IF函数永远不会是真的,如果你点击所有项目就应该这样。
答案 0 :(得分:4)
尝试
$(".kc_submit_1").click(function () {
var correctAnswers = ['true', 'true', 'true', 'true', 'true'];
var allAnswers = $('.kc_answer').map(function (i) {
return correctAnswers[i] == this.value ? this.value : undefined;
});
//alert (correctAnswers);
//alert (allAnswers);
if (allAnswers.length == correctAnswers.length) {
alert('Yahtzee');
};
})
演示:Fiddle
答案 1 :(得分:2)
您需要通过循环执行此操作,因为数组是JavaScript中的对象,并且不同的对象具有不同的对象ID,这意味着javascript永远不会将它们视为相等。要使此特定脚本有效,您可以执行以下操作:
$(".kc_submit_1").click(function () {
var correctAnswers = ['true','true','true','true','true'];
var allAnswers = [];
var wrongAnswers = [];
$('.kc_answer').each(function() {
currInd = allAnswers.length;
allAnswers.push($(this).val());
if (allAnswers[currInd] != correctAnswers[currInd])
wrongAnswers[currInd] = $(this).val();
});
if (wrongAnswers.length) {
alert ('Yahtzee');
};
})
在任何其他情况下,你可以使用像这样的函数:
function compareArray(arr1, arr2) {
var clone2 = arr2.slice(0);
var difflen = 0;
for (var i=0;i<arr2.length;i++) {
if (i in arr1 && arr1[i] == arr2[i]) {
clone2[i] = undefined;
} else {
difflen++;
}
}
clone2.len = difflen;
return clone2;
}
此函数将返回一个数组,其中数组2中的所有值都不等于数组1中的值。要获得差异量,需要执行compareArray(arr1, arr2).len
。