Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查一个变量是否大于多个其他变量?_Javascript_Html - Fatal编程技术网

Javascript 如何检查一个变量是否大于多个其他变量?

Javascript 如何检查一个变量是否大于多个其他变量?,javascript,html,Javascript,Html,我需要检查一个变量是否大于4个其他变量。 有办法做到这一点吗? 到目前为止我已经试过了 if(Guitar > Percussion || Brass || Keyboard || Woodwind) { var guitarpage = document.getElementById("GuitarPage"); guitarpage.style.display ="block"; }

我需要检查一个变量是否大于4个其他变量。 有办法做到这一点吗? 到目前为止我已经试过了

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开关做什么?@user3500310
switch
根据多个常量检查单个值。但是我把它改成了一个更好的方法。Afaict,它检查
=
,而不是
,并从可能相等的最大值中选择第一个,但我同意,这可能就是op的意思。@Amadan建议:我们现在可以使用spread运算符了
Math.max(…values)
而不是
apply
。为什么木管乐器本身而不是木管乐器和打击乐器?对不起,我认为这条线在一个尴尬的位置断了,这是代码:
if(打击乐器>吉他和打击乐器>铜管乐器和打击乐器>键盘和打击乐器>木管乐器)
哦,不,我不是在想,如果(打击乐器>吉他和打击乐器>铜管和打击乐器>键盘和打击乐器>木管和打击乐器)?不,那是不对的,因为在最后,你将表达式
打击乐器本身作为布尔值进行计算,这将导致一个错误,因为我认为在您的问题中,变量
touction
不是布尔值,因此它本身无法计算为真/假表达式。因此,我对每种乐器重复了它(5次)有没有办法不检查每一个“if”语句,如果其中一个是真的?