Javascript 如何检查一个变量是否大于多个其他变量?
我需要检查一个变量是否大于4个其他变量。 有办法做到这一点吗? 到目前为止我已经试过了Javascript 如何检查一个变量是否大于多个其他变量?,javascript,html,Javascript,Html,我需要检查一个变量是否大于4个其他变量。 有办法做到这一点吗? 到目前为止我已经试过了 if(Guitar > Percussion || Brass || Keyboard || Woodwind) { var guitarpage = document.getElementById("GuitarPage"); guitarpage.style.display ="block"; }
if(Guitar > Percussion || Brass || Keyboard || Woodwind)
{
var guitarpage = document.getElementById("GuitarPage");
guitarpage.style.display ="block";
}
if(Percussion > Guitar || Brass || Keyboard || Woodwind)
{
var percussionpage = document.getElementById("PercussionPage");
percussionpage.style.display ="block";
}
if(Brass > Percussion || Guitar || Keyboard || Woodwind) {
var brasspage = document.getElementById("BrassPage");
brasspage.style.display ="block";
}
if(Keyboard > Percussion || Guitar || Brass || Woodwind) {
var keyboardpage = document.getElementById("KeyboardPage");
keyboardpage.style.display ="block";
}
if(Woodwind > Percussion || Guitar || Keyboard || Brass) {
var woodpage = document.getElementById("WoodwindPage");
woodpage.style.display ="block";
}
以及使用&&但我要么显示每个div,要么根本不显示 遗憾的是,对于每个变量,您都必须做很长一段路,就像这样:
if(打击乐器>吉他和打击乐器>铜管和打击乐器>键盘和打击乐器>木管乐器)
这将检查敲击
变量是否大于所有其他变量。此外,要检查撞击力
是否大于所有其他变量,必须使用&&
而不是|
,如示例所示
祝你好运
Guitar > Percussion || Brass || Keyboard || Woodwind
评估为
(Guitar > Percussion) || Brass || Keyboard || Woodwind
如果吉他>打击乐器
,或黄铜
,键盘
和打击乐器
中的第一个假值,则为真
你想要的是(吉他>打击乐器和吉他>铜管乐器和吉他>键盘和吉他>木管乐器)
。更好的是,您可以这样做:
var vals = [Guitar, Percussion, Brass, Keyboard, Woodwind];
var pageNames = ["GuitarPage", "PercussionPage", "BrassPage", "KeyboardPage", "WoodwindPage"];
var max = Math.max.apply(null, vals);
var index = vals.indexOf(max);
if (vals.indexOf(max, index + 1) == -1) {
var pageName = pageNames[index];
var page = document.getElementById(pageName);
page.style.display = "block";
}
编辑:
if
检查是否有第二个值也是max
,并避免在这种情况下进行操作;这使得它相当于OP的代码。要检查一个变量是否大于所有其他变量,您需要使用&&
而不是|
,如下所示:
if (Percussion > Guitar &&
Percussion > Brass &&
Percussion > Keyboard && Percussion > Woodwind)
(吉他>打击乐器|铜管乐器|键盘|木管乐器)
==>(吉他>打击乐器|吉他>铜管乐器|吉他>键盘|吉他>木管乐器)
给项目的值是什么?它们是数字吗?使用math.max([arr of variables])使用一个条件Use switch case而不是if else Ladder开关做什么?@user3500310switch
根据多个常量检查单个值。但是我把它改成了一个更好的方法。Afaict,它检查=
,而不是
,并从可能相等的最大值中选择第一个,但我同意,这可能就是op的意思。@Amadan建议:我们现在可以使用spread运算符了Math.max(…values)
而不是apply
。为什么木管乐器本身而不是木管乐器和打击乐器?对不起,我认为这条线在一个尴尬的位置断了,这是代码:if(打击乐器>吉他和打击乐器>铜管乐器和打击乐器>键盘和打击乐器>木管乐器)
哦,不,我不是在想,如果(打击乐器>吉他和打击乐器>铜管和打击乐器>键盘和打击乐器>木管和打击乐器)?不,那是不对的,因为在最后,你将表达式打击乐器本身作为布尔值进行计算,这将导致一个错误,因为我认为在您的问题中,变量touction
不是布尔值,因此它本身无法计算为真/假表达式。因此,我对每种乐器重复了它(5次)有没有办法不检查每一个“if”语句,如果其中一个是真的?