首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Actionscript:比较数组中的变量

Actionscript:比较数组中的变量
EN

Stack Overflow用户
提问于 2013-06-18 18:59:40
回答 3查看 122关注 0票数 0

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

我用过这段代码,但当它满足等于条件(A=B=C)时,它只显示D

代码语言:javascript
运行
复制
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];
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-21 01:47:49

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

基本上,算法是:

  • 捕获对象/字典中的分数,其中键是玩家的名称,值是他们在对象/字典中的每个项目/玩家,并将当前分数与最大分数进行比较。
  • 如果当前分数大于最大分数,请清除所有以前的获胜者,设置新的最高分数,并将当前玩家添加到获胜者。
  • 如果当前分数等于最大分数,则将当前玩家添加到赢家数组中。

下面是一些草率编写的actionscript。

代码语言:javascript
运行
复制
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数组中获得获胜球员的姓名。

票数 0
EN

Stack Overflow用户

发布于 2013-06-19 01:56:59

代码语言:javascript
运行
复制
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];
   }
}

数组最高值现在将保持最高分数

票数 0
EN

Stack Overflow用户

发布于 2013-06-22 06:46:05

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

代码语言:javascript
运行
复制
<?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>

根据这个示例,我从最高到最低对数组进行排序,然后取第一个。它工作得很完美。我希望这能帮到你

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17167181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档