有没有办法检查变量列表以确定哪个变量最大?

时间:2011-12-20 14:23:42

标签: javascript

我是javascript的新手,但我有三个变量,我想确定哪一个是最大的,有没有办法将变量放入数组,或者更简单的方法来确定哪个是最大的?

目标是让客户提出一些问题,并且每个问题都会增加相应的变量。如果您进行测试,您会在下面的链接中注意到。一旦确定哪个变量最大,它就会将文档写入span id。

我已经搜索过,但对此没有太多了解。

http://www.sprayfoamsys.com/cmsdev/index.php?page=rig-constructor

4 个答案:

答案 0 :(得分:5)

当你说“最大”时我会假设你想要比较最大的数值,这很简单:

largest = Math.max(a, b, c);

可能需要某种类型强制,因为Math.max需要数值:

a = 'foo100';
b = 'foo200';
c = 'foo300';
largest = Math.max(a, b, c);

在这种情况下,largest将为NaN,因为没有值是数字。对于此示例,您可以使用:

r = /\D/g;
largest = Math.max(a.replace(r, ''), b.replace(r, ''), c.replace(r, ''));
//largest == 300

对于后缀值,例如30px,您可以使用parseInt


如果您需要知道哪个变量最大,可以将最大值与原始变量进行比较:

//这是两个不能很好扩展的简短示例,但适用于< 5项

if (largest === a) {
  //a
} else if (largest === b) {
  //b
} else if (largest === c) {
  //c
}

switch (largest) {
  case a:
    //a
    break;
  case b:
    //b
    break;
  case c:
    //c
    break;
}

答案 1 :(得分:1)

" Math.max()"函数可以传递任意数量的参数,并且它将返回最大的参数。因此,如果您想要的是列表中最大的,那么应该这样做。

还要注意&#34;做一个document.write()&#34;不是你如何更新页面。调用&#34; document.write()&#34;页面完成后,其初始渲染将消除它。相反,您要做的就是找到<span>的&#34; id&#34;值然后设置它的&#34; innerHTML&#34;:

 var theSpan = document.getElementById("the-id-of-the-span");
 theSpan.innerHTML = largestValue;

答案 2 :(得分:0)

在查看您提供的链接后,看起来其他人提供的Math.max解决方案实际上并不是您想要的,因为您不想知道最大的变量>,而哪个变量是最大的。最简单(也是最可读)的方法是:

if (a >= b && a >= c) {
    document.getElementById("mySpan").innerHTML("Plan A is the best.");
} else if (b >= a && b >= c) {
    document.getElementById("mySpan").innerHTML("Plan B is the best.");
} else {
    document.getElementById("mySpan").innerHTML("Plan C is the best.");
}

请注意,根据您提供的测验格式,用户完全可以获得平局。

答案 3 :(得分:0)

这是查找最大数组项的索引和值的一种方法,如果您抽象代码来处理 n 选项,这可能会派上用场。

var largest = -99999; // something less than the largest
var largestIndex = -1; // an invalid array index
var check = [4, -2, 0.11023, 100, 500];

for (var i=0; i < check.length; i++) {
  if (check[i] > largest) {
    largest = check[i];
    largestIndex = i;
  }
}

alert('the largest was item ' + largestIndex + ' with a value of ' + largest);