我为rpg网站创建了一个多项选择测试。
测试有14个问题。
这些问题和答案中有一半在名为primaryResults的对象的8个属性中的1个内添加数值。
后半部分完全相同,但将数据存储在名为secondaryResults的对象中。
现在我需要一种比较这两个对象的所有属性的方法,以便将正确的结果附加到用户。
例如
如果PrimaryResults.def>而不是主要的其他属性。
和
如果secondaryResults.def>比其他的二级属性。
然后追加与def / def对应的div来显示。
是否有比
更有效的方法如果primaryResults.def> primaryResults.ber&& PrimaryResults.mnk&& primaryResults.rng
等等 编辑:已添加代码
$(".intro").appendTo('#display_box');
var question = $(".question");
var questionPosition = -1;
var results =$(".results");
var secondaryResults = {
def:0,
ber:0,
mnk:0,
rng:0,
cle:0,
thf:0,
mge:0,
dru:0,
};
var primaryResults = {
def:0,
ber:0,
mnk:0,
rng:0,
cle:0,
thf:0,
mge:0,
dru:0,
};
function clearBox(){
$("#display_box").children().fadeOut(500).appendTo('#question_holding');
};
function cycle(){
question.eq(questionPosition).fadeIn(500).appendTo("#display_box");
$("#display_box").animate({scrollTop:0}, 500);
}
$('#leftarrow').on('click', function(){
questionPosition--;
if (questionPosition <= -1) {questionPosition = 13};
clearBox();
cycle();
});
$('#rightarrow').on('click', function(){
questionPosition++;
if (questionPosition > 13) { questionPosition = 0};
clearBox();
cycle();
if($('input[name^="answer"]:checked').length > 13 ) {
$("#submit").css('display', 'block');
}
});
$('#submit').on('click', function() {
$('input[name^= "answer"]:checked').each(function(){
if ($(this).val() == "monkL"){
secondaryResults.mnk += 1.02;
}
if ($(this).val() == "berserkerL"){
secondaryResults.ber += .99;
}
if ($(this).val() == "defenderL"){
secondaryResults.def += 1.01;
}
if ($(this).val() == "thiefL"){
secondaryResults.thf += 1;
}
if ($(this).val() == "mageL"){
secondaryResults.mge += .98;
}
if ($(this).val() == "clericL"){
secondaryResults.cle += 1.03;
}
if ($(this).val() == "rangeL"){
secondaryResults.rng += .97;
}
if ($(this).val() == "druidL"){
secondaryResults.dru += 1.05;
}
})
});
$('#submit').on('click', function() {
$('input[name^= "answer"]:checked').each(function(){
if ($(this).val() == "monkM"){
secondaryResults.mnk += 1.31;
}
if ($(this).val() == "berserkerM"){
secondaryResults.ber += 1.29;
}
if ($(this).val() == "defenderM"){
secondaryResults.def += 1.3;
}
if ($(this).val() == "thiefM"){
secondaryResults.thf += 1.28;
}
if ($(this).val() == "mageM"){
secondaryResults.mge += 1.27;
}
if ($(this).val() == "cleric"){
secondaryResults.cle += 1.32;
}
if ($(this).val() == "rangeM"){
secondaryResults.rng += 1.33;
}
if ($(this).val() == "druidM"){
secondaryResults.dru += 1.26;
}
})
});
$('#submit').on('click', function() {
$('input[name^= "answer"]:checked').each(function(){
if ($(this).val() == "monkH"){
secondaryResults.mnk += 1.5;
}
if ($(this).val() == "berserkerH"){
secondaryResults.ber += 1.51;
}
if ($(this).val() == "defenderH"){
secondaryResults.def += 1.52 ;
}
if ($(this).val() == "thiefH"){
secondaryResults.thf += 1.49;
}
if ($(this).val() == "mageH"){
secondaryResults.mge += 1.48;
}
if ($(this).val() == "clericH"){
secondaryResults.cle += 1.47;
}
if ($(this).val() == "rangeH"){
secondaryResults.rng += 1.53;
}
if ($(this).val() == "druidH"){
secondaryResults.dru += 1.51;
}
})
});
$('#submit').on('click', function() {
$('input[name^= "answer"]:checked').each(function(){
if ($(this).val() == "monkPL"){
secondaryResults.mnk += .96;
}
if ($(this).val() == "berserkerPL"){
secondaryResults.ber += .97;
}
if ($(this).val() == "defenderPL"){
secondaryResults.def += .98;
}
if ($(this).val() == "thiefPL"){
secondaryResults.thf += .99;
}
if ($(this).val() == "magePL"){
secondaryResults.mge += 1;
}
if ($(this).val() == "clericPL"){
secondaryResults.cle += 1.01;
}
if ($(this).val() == "rangePL"){
secondaryResults.rng += 1.02;
}
if ($(this).val() == "druidPL"){
secondaryResults.dru += 1.03;
}
})
});
$('#submit').on('click', function() {
$('input[name^= "answer"]:checked').each(function(){
if ($(this).val() == "monkP"){
primaryResults.mnk += 1.3;
}
if ($(this).val() == "berserkerPM"){
primaryResults.ber += 1.26;
}
if ($(this).val() == "defenderPM"){
primaryResults.def += 1.27;
}
if ($(this).val() == "thiefPM"){
primaryResults.thf += 1.28;
}
if ($(this).val() == "magePM"){
primaryResults.mge += 1.29;
}
if ($(this).val() == "clericPM"){
primaryResults.cle += 1.31;
}
if ($(this).val() == "rangePM"){
primaryResults.rng += 1.32;
}
if ($(this).val() == "druidPM"){
primaryResults.dru += 1.33;
}
})
});
$('#submit').on('click', function() {
$('input[name^= "answer"]:checked').each(function(){
if ($(this).val() == "monkPH"){
primaryResults.mnk += 1.46;
}
if ($(this).val() == "berserkerPH"){
primaryResults.ber += 1.47;
}
if ($(this).val() == "defenderPH"){
primaryResults.def += 1.48 ;
}
if ($(this).val() == "thiefPH"){
secondaryResults.thf += 1.49;
}
if ($(this).val() == "magePH"){
primaryResults.mge += 1.5;
}
if ($(this).val() == "clericPH"){
primaryResults.cle += 1.51;
}
if ($(this).val() == "rangePH"){
primaryResults.rng += 1.52;
}
if ($(this).val() == "druidPH"){
primaryResults.dru += 1.536172;
}
$("#submit").css('display','none');
})
});
$('#submit').on('click',function(){
if (Object.keys(primary).every(function(key) {
return key == 'def' || primary.def > primary[key];
})) {
$(results.eq(0)).appendTo$("#display_box");
}
});
});
});
答案 0 :(得分:1)
您可以使用Array.prototype.every
函数测试对象中的每个属性。
var primary = {
A: 100,
B: 5,
C: 6,
D: 15,
E: 30
};
if (Object.keys(primary).every(function(key) {
return key == 'A' || primary.A > primary[key];
})) {
console.log("Success!");
}
&#13;
Object.keys(primary)
返回一个包含primary
中所有属性名称的数组,即["A", "B", "C", ...]
。
every()
然后在该数组的每个元素上调用该函数;如果所有调用都返回true
,则返回true
,否则返回false
。
然后,对于每个给定的密钥,该函数检查primary.A
是否大于primary[key]
。测试key == 'A'
使其无法尝试将primary.A
与自身进行比较,因此它会有效地忽略对象中的该属性。