Actionscript:比较数组中的变量

时间:2013-06-18 10:59:40

标签: actionscript compare

需要帮助,我有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];
    }
}

3 个答案:

答案 0 :(得分: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];
   }
}

数组最高将获得最高分

答案 1 :(得分:0)

如果你想为分数输出一个字母/ etc,我会使用一个对象/字典而不是一个直的数组。

基本上,算法将是:

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

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

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

  • 如果当前得分等于最高得分,请将当前玩家添加到获奖者数组中。

以下是一些仓促炮制的动作。

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数组中获胜玩家的名称。

答案 2 :(得分: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>

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