as3检查数组中具有相同属性的2个对象

时间:2014-04-29 01:03:49

标签: arrays actionscript-3 compare

我有一个数组,我们称之为_persons。 我用Value Objects填充这个数组,让我们调用这个对象PersonVO

每个PersonVO都有一个名称和一个得分属性。

我要做的是搜索数组&

//PSEUDO CODE

1 Find any VO's with same name (there should only be at most 2)
2 Do a comparison of the score propertys
3 Keep ONLY the VO with the higher score, and delete remove the other from the _persons array.

我遇到代码实现问题。任何AS3向导都能提供帮助吗?

2 个答案:

答案 0 :(得分:0)

你想遍历数组并检查是否有两个同名的人。

我有另一个可能有帮助的解决方案,如果不是,请说。

                    childrenOnStage = this.numChildren;
                    var aPerson:array = new array;


        for (var c:int = 0; c < childrenOnStage; c++)
        {
            if (getChildAt(c).name == "person1")
            {
              aPerson:array =(getChildAt(c);
            }
        }

        Then trace the array, 

答案 1 :(得分:0)

您最好使用Dictionary执行此任务,因为您有一个指定的唯一属性可供查询。如果您只有一个键属性(在您的情况下为name),并且您需要在任何给定时间只有一个对象来拥有此属性,则字典方法是可行的。一个例子:

var highscores:Dictionary;
// load it somehow
function addHighscore(name:String,score:Number):Boolean {
    // returns true if this score is bigger than what was stored, aka personal best
    var prevScore:Number=highscores[name];
    if (isNaN(prevScore) || (prevScore<score)) {
        // either no score, or less score - write a new value
        highscores[name]=score;
        return true;
    }
    // else don't write, the new score is less than what's stored
    return false;
}

此示例中的字典使用传递的字符串作为name属性,即此处的“主键”,因此所有记录都应具有唯一的name部分,并传递给函数。分数是存储记录的值部分。您可以在字典中存储多个属性作为值,在这种情况下,您需要将其换行到Object