比较两个对象本身和彼此

时间:2016-06-04 14:18:54

标签: javascript jquery object properties

我是一个非常新的程序员,我不习惯比一些if else语句或一些轻量级DOM遍历更复杂的东西。

在stackoverflow的帮助下,我为一个正在构建的RPG网站创建了一个测试。

14个问题测试用户“担心”作为地牢和龙的玩家喜欢设置,并为8个人格类型中的1个分配点数。

这8种类型中的每一种都是两个对象的属性。 PrimaryResults和secondaryResults。 8个属性中的每一个都具有相同的名称。 后卫(def),Berserker(ber),Monk(mnk)等(你会在代码中看到它)

重点是能够得到Def / Def或Ber / Def或Mnk / Def等结果 有8x8组合或64个结果。

然后一个带有一类结果的div根据测试的最终分数将实际的HTML结果附加到用户的屏幕上。

我的问题:

我需要一行代码来遍历BOTH对象的每个属性并找到最高值,我试图把它放在一个IF语句中,这会导致向用户附加正确的结果。

6/5 ---

更新了尝试

使用Azamantes的代码建议,我发现无论每个变量的实际值是多少,我仍然得到DEF / DEF的结果。

我已经包含了一个屏幕截图,其中显示了console.log告诉我的值与显示器所显示的值之间的关系。

由于某种原因代码循环

如果ph = def和sh = def,它的回归为真。

在图片中我圈出了一个可能的问题,我不知道我不是专家。

它可能与它如何在顶部显示0表示ber并且在点击时具有ber的分数有什么关系吗? (见图)

或者它可能与对象本身的值有关吗?某些地方的翻译价值是否会丢失?

$(window).load(function() {
$(".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,
};







let pH = 'def', sH = 'def';

Object.keys(primaryResults).map(key => {
if(primaryResults[key] > primaryResults[pH]) {
    pH = key;
}
if(secondaryResults[key] > secondaryResults[pH]) {
    sH = key;
}
});

const highestPrimary = primaryResults[pH];
const highestSecondary = secondaryResults[sH];

$("#submit").on('click', function(){

    console.log(primaryResults);
    console.log(secondaryResults);

    if (pH == 'def' && sH == 'def') {
        clearBox();
        results.eq(0).fadeIn(500).appendTo('#display_box');
    };

    if (pH == 'def' && sH == 'ber') {
        clearBox();
        results.eq(1).fadeIn(500).appendTo('#display_box');
    };

    if (pH == 'def' && sH == 'mnk') {
        clearBox();
        results.eq(2).fadeIn(500).appendTo('#display_box');
    };

        if (pH == 'def' && sH == 'rng') {
        clearBox();
        results.eq(3).fadeIn(500).appendTo('#display_box');
    };

    if (pH == 'def' && sH == 'thf') {
        clearBox();
        results.eq(4).fadeIn(500).appendTo('#display_box');
    };

    if (pH == 'def' && sH == 'cle') {
        clearBox();
        results.eq(5).fadeIn(500).appendTo('#display_box');
    };

    if (pH == 'def' && sH == 'dru') {
        clearBox();
        results.eq(6).fadeIn(500).appendTo('#display_box');
    };

    if (pH == 'def' && sH == 'mge') {
        clearBox();
        results.eq(7).fadeIn(500).appendTo('#display_box');
    };






}) 







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"){
            primaryResults.mnk += .96;

        }

        if ($(this).val() == "berserkerPL"){
            primaryResults.ber += .97;

        }

        if ($(this).val() == "defenderPL"){
            primaryResults.def += .98;

        }

        if ($(this).val() == "thiefPL"){
            primaryResults.thf += .99;

        }

        if ($(this).val() == "magePL"){
            primaryResults.mge += 1;

        }

        if ($(this).val() == "clericPL"){
            primaryResults.cle += 1.01;

        }

        if ($(this).val() == "rangePL"){
            primaryResults.rng += 1.02;

        }

        if ($(this).val() == "druidPL"){
            primaryResults.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');
        })


    });




















}); 

Screen cap of results

1 个答案:

答案 0 :(得分:0)

如果我理解你,这就是你所需要的:

let primaryResults = {
    def: 0, ber: 5, mnk: 99999,
    rng: 0, cle: 1, thf: 1,
    mge: 0, dru: 1,
};
let secondaryResults = {
    def: 1, ber: 0, mnk: 0,
    rng: 1, cle: 33333333, thf: 0,
    mge: 1, dru: 0,
};

let pH = 'def', sH = 'def';
let highestPrimary, highestSecondary;

Object.keys(primaryResults).map(key => {
    if(primaryResults[key] > primaryResults[pH]) {
        pH = key;
    }
    if(secondaryResults[key] > secondaryResults[sH]) {
        sH = key;
    }
});

highestPrimary = primaryResults[pH];
highestSecondary = secondaryResults[sH];

pH值 - 键入primaryResults,值为最高值 sH - 具有最高值的resultsResults中的键 highestPrimary - primaryResults中的最高值
highestSecondary - secondaryResults中的最高值