我有一个数组,我们称之为_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向导都能提供帮助吗?
答案 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
。