获取math.max函数的变量名称

3

我试图获取变量 winner。我正在寻找最高的数字,但如何获取相应的 player / 变量名称

var A = 0;
var B = 0;
var C = 0;
var D = 0;
var E = 0;
var F = 0;
var G = 0;
var H = 0;


$('.answer').on('click', function (evt) {

     const types = $(this).data("typ").split(" "); // split on space.
     const active = $(this).is('.active');
     
     types.forEach(typ => { 
        if (active) {
          window[typ]--
    } else {
         window[typ]++
    }
  })
    console.log(A,B,C,D,E,F,G,H)
    $(this).toggleClass("active");
});


$('.fin').on('click', function (evt) {
    
    var players = ['playerA': A, 'playerB': B,'playerC': C,'playerD': D,'playerE': E,'playerF': F,'playerG': G, 'playerH': H];
    
    var winner = Math.max.apply(null, players );
    
    alert(winner, 'wins');
    
    });

感谢您的预先支持!

不要使用单独的变量,而是使用数组。 - Barmar
然后在获取最大值后,您可以在数组中找到其索引。 - Barmar
在数组中不能使用 key: value 表示法,只能在对象中使用。 - Barmar
嗯,不太确定你的意思。我能否仅使用数组来使用答案函数?如果您不介意的话,能否向我展示一下(新手;)?无论如何,谢谢。 - mhouse
啊,现在我明白你说的键:值是什么意思了。 - mhouse
1个回答

4

你应该使用一个对象来存储带有播放名称的值(即{}),而不是使用[]的数组。

然后,您可以使用这里的答案来获取最高值。


工作演示:

var A = 0;
var B = 1;
var C = 2;
var D = 3;
var E = 9;
var F = 5;
var G = 6;
var H = 7;


$('.fin').on('click', function (evt) {
     
    var players = {'playerA': A, 'playerB': B,'playerC': C,'playerD': D,'playerE': E,'playerF': F,'playerG': G, 'playerH': H};
    
    var winner = Object.keys(players).reduce(function(a, b){ return players[a] > players[b] ? a : b });

    
    alert(winner, 'wins');
    
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class="fin">Fin</button>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接