我真的需要帮助解决这个小问题,我必须按照最高分对第一人进行排名。
//variables where the total value will go for each person
var musT = 0;
var zikT = 0;
var hamT = 0;
// if the spacebar is pressed
document.body.onkeyup = function(e){
if(e.keyCode == 32){
//generate random integers between 1 and 12
var person_0 = Math.floor(Math.random() * 12 + 1);
var person_1= Math.floor(Math.random() * 12 + 1);
var person_2 = Math.floor(Math.random() * 12 + 1);
// add total number of pushups
musT += person_0;
zikT += person_1;
hamT += person_2;
//displaying the total pushups
$("#musT .box").html(musT);
$("#zikT .box").html(zikT);
$("#hamT .box").html(hamT);
}
我想以更好的方式排名最高的数字
//ranking the top person
if(musT > zikT && hamT){
$("#first").html("Musa: " + musT );
} if(zikT > musT && hamT){
$("#first").html("Zikria: " + zikT );
} if(hamT > musT && zikT){
$("#first").html("Hamza: " + hamT );
}
}
答案 0 :(得分:0)
这不会像你写的那样起作用
if(musT > zikT && hamT){
$("#first").html("Musa: " + musT );
} if(zikT > musT && hamT){
$("#first").html("Zikria: " + zikT );
} if(hamT > musT && zikT){
$("#first").html("Hamza: " + hamT );
像这样写:
if(musT > zikT && musT > hamT){
$("#first").html("Musa: " + musT );
} else if(zikT > musT && zikT > hamT){
$("#first").html("Zikria: " + zikT );
} else if(hamT > musT && hamT > zikT){
$("#first").html("Hamza: " + hamT );
这也是一种不好的方法。而不是使用if else条件尝试将其存储在数组中并从该数组中获取最大值。
答案 1 :(得分:0)
在javascript中,您只能比较两个值a > b
。如果您想要比较多个值,则应该像a > b && a > c
那样进行比较。此外,如果你想使用复杂的if语句,你应该像
if(statement){
//something
} else if (other thing..){
// and so
} else if (statement3){
// and so
} else {
// this is the last case
}
你可以拥有if-else语句所需的数量。
答案 2 :(得分:0)
你真是太近了!唯一的问题是您的if
条件。根据您的逻辑musT > zikT && hamT
,您实际上只是检查must
是否大于zikT
,而hamT
只是存在。
那是因为&&
(AND)认为其中任何一方的所有内容都是单独的条件。您的上述代码将等同于(musT > zikT) && (hamT)
括号。
记住这一点,如果您自己手动添加括号,通常会更容易理解,如下面的工作示例所示。使用 else if
语句也很重要,这样您就不会意外触发多个条件。
不要忘记,所有数字相同也是可能的。您还需要else
条件来涵盖这种可能的结果。
var person_1 = Math.floor(Math.random() * 12 + 1);
var person_2 = Math.floor(Math.random() * 12 + 1);
var person_3 = Math.floor(Math.random() * 12 + 1);
if ((person_1 > person_2) && (person_1 > person_3)) {
console.log("Person 1 is highest");
}
else if ((person_2 > person_1) && (person_2 > person_1)) {
console.log("Person 2 is highest");
}
else if ((person_3 > person_1) && (person_3 > person_2)) {
console.log("Person 3 is highest");
}
else {
console.log("They're all the same!");
}
希望这有帮助! :)
答案 3 :(得分:0)
你可以使用sort和你声明为对象的初始变量来帮助你。
// your global variables modified to be an array of objects
var people = [
{name: "Musa", count: 0},
{name: "Zikria", count: 0},
{name: "Hamza", count: 0}
]
// after you are done counting, sort the object
var sortedPeople = people.sort((a, b) => b.count > a.count))
// then just take the top person and append them in your div, no checks
$("#first").html(`${sortedPeople[0].name}: ${sortedPeople[0].count}`)
}
请确保修改计数器以考虑此新结构。