使用JavaScript查找最大变量

时间:2015-06-20 23:16:24

标签: javascript jquery arrays max

我有三十个变量都是数字:

h0 = 23

h1 = 27

h2 = 90

...

如何找到最大的变量?

此处的输出应为h2。

5 个答案:

答案 0 :(得分:2)

假设变量都以连续顺序命名,您可以将它们添加到数组中:

var values = [h0, h1, ....h29];

然后迭代数组,比较值并跟踪最大值的索引:

var maxIndex = 0;

for (var i = 1; i < values.length; i++) {
   if (values[maxIndex] < values[i]) {
       maxIndex = i;
   }
}

maxIndex现在将包含最大值的索引,您可以将其与'h'连接,例如

console.log('h' + maxIndex);

当然这种方法做了很多假设并且很脆弱,但这就是你在做这种“元编程”时所得到的(变量名真的不应该与任何关注任何使用该应用程序的人。)

使用对象可以使它更好一点,至少关于变量名称:

var values = {
    h0: h0,
    h1: h1,
    ...
};

var maxProp = '';

for (var prop in values) {
   if (values[maxProp] < values[prop]) {
       maxProp = prop;
   }
}

答案 1 :(得分:0)

将它们放在数组而不是单个变量中,然后遍历数组。

要强制它,比较相邻的变量对,然后是结果对,直到只留下一个。

答案 2 :(得分:0)

如果您希望答案是&#39; h2&#39;而不是&#39; 90&#39; (根据评论),尝试使用Object而不是单独的变量(或数组,如其他答案中所述)。

var find_max = {
  'h0': 23,
  'h1': 27,
  'h2': 90,
  // and so on
};

然后遍历对象的属性以找到最大值。

var max;
for (var h in find_max) {
  if (!max || (find_max[h] > find_max[max])) {
    max = h;
  }
}

你可以改进这个循环 - 尝试使用hasOwnProperty来确保循环中的唯一项目是你想要的。

答案 3 :(得分:0)

您可以通过这种方式使用the bracket notation检查窗口对象来轻松获取它:

&#13;
&#13;
h0 = 11;
h1 = 24;
h2 = 28;
h3 = 345;
h4 = 1;

var i = 0;
var max = {
    name: 'none',
    val: 0
};
while (nextItem = window['h'+i]) {
    if (nextItem > max.val) {
        max = {
            name: 'h'+i,
            val: nextItem
        };
    };
    i++;
};
document.getElementById('max').innerHTML = max.name + ' = ' + max.val;
&#13;
<p>Maximum is: <span id="max"></span></p>
&#13;
&#13;
&#13;

答案 4 :(得分:-1)

编辑:由于没有考虑到真正的问题,我在发布以下内容时太仓促了。从那时起,已经有了很好的答案,所以我只是展示一种方法,你可以按降序对变量进行排序。一种方法是将数字放在一个对象数组中,以便:

numArray = [{name:h0, value:23}, {name:h1, value:27}, {name:h2, value:90}];

并做:

numArray.sort(function(a, b){
    return b.value - a.value;
});

根据这个:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max

一旦你在数组中有数字,它看起来很容易。你可以打电话给

Math.max.apply(null, numArray)

在数组上,或者,使用ES6,你可以说Math.max(... numArray)(...是“spread”运算符)。

您也可以进行排序:

 numArray.sort(function(a, b){
      return b - a;
   });

哪个会按降序对数组进行排序,最大数字现在为numArray [0]。