0

需要帮助,我有 totalA - totalB - totalC - totalD,需要从这 4 个变量中选择最高的变量,但如果最高的变量等于另一个变量,则必须显示哪些变量相等。

我已经使用了这段代码,但是当它满足等于( A = B = C )时,它只显示 D

var aNumber:Array = new Array(totalA , totalB , totalC , totalD );

for(var i:Number = 0; i < aNumber.length; i++)
{
    if(aNumber[i] < aNumber[i+1]) 
    {
        bigger = aNumber[i+1];
    }
}
4

3 回答 3

0
var aNumber:Array = new Array(totalA , totalB , totalC , totalD );
bigger = aNumber[0];
for(var i:Number = 1, var j:Number = (aNumber.length)-1; i<j ; i++)
{
    if(bigger < aNumber[i]) 
    {
        bigger = aNumber[i];
    }
}
var highest:Array = new Array();
highest[] = bigger;
for(var i:Number = 0, var j:Number = (aNumber.length); i<j ; i++){
   if(aNumber[i] == bigger){
     highest[] = aNumber[i];
   }
}

Array highest will now hold the highest score(s)

于 2013-06-18T17:56:58.790 回答
0

如果您想为分数输出字母/等,我会使用对象/字典而不是直接数组。

基本上,该算法将是:

  • 在对象/字典中捕获分数,其中键是玩家的姓名,值是他们的分数。

  • 枚举对象/字典中的每个项目/玩家,并将当前分数与最大分数进行比较。

  • 如果当前分数大于最高分数,清除所有以前的获胜者,设置新的最高分数并将当前玩家添加到获胜者中。

  • 如果当前分数等于最大分数,则将当前玩家添加到获胜者数组中。

以下是一些仓促编造的动作脚本。

var scores:Object = {
    'A': totalA,
    'B': totalB,
    'C': totalC,
    'D': totalD
};

var maxScore:Number = -1;
var winners:Array = new Array();

for(var player:String in scores)
{
    var score:Number = scores[player];

    if (score > maxScore)
    {
        maxScore = score;

        winners = new Array();
        winners.push(player);
    }
    else if (score == maxScore)
    {
        winners.push(player);
    }
}

在这段代码的末尾,你应该在数组中有最高分maxScore和获胜玩家的名字。winners

于 2013-06-20T17:47:49.007 回答
0

这个解决方案可以更优雅一点(假设一个数组包含整数值):

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">
    <mx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
            import mx.collections.Sort;
            import mx.collections.SortField;
            import mx.controls.Alert;
            private var array:Array = [1,2,3,4,3];

            public function init():void{
                var maxValue:Number = getMaxValue(new ArrayCollection(array));
                Alert.show(String(maxValue)); //show value 4
            }

            private function getMaxValue(tempArr:ArrayCollection):Number { 
                var dataSort:Sort    = new Sort(); 
                dataSort.fields        = [new SortField(null,false,true,true)];; 
                tempArr.sort = dataSort; 
                tempArr.refresh(); 
                return tempArr[0];
            }
        ]]>
    </mx:Script>
</mx:Application>

根据这个例子,我将数组从最高到最低排序并取第一个。它完美地工作。我希望这有帮助

于 2013-06-21T22:46:04.817 回答