我一直在研究排序数组集合。到目前为止,我已经看到了诸如按升序和降序进行数字排序之类的事情。我正在寻找的是根据另一个数组中值的顺序对数组集合进行排序。
例如:
我有一个包含 10 个数值的数组。我也有一个数组集合。每个 arracycollection 条目的属性之一对应于前一个数组中的一个值。
我希望能够根据数组中值的顺序对数组集合进行排序。
最好的方法是什么?
我正在考虑遍历第一个数组,获取第一个值,在 arraycollection 中找到具有该值的条目,然后将其添加到新的 arraycollection 中,但这似乎有点冗长,我希望可能有一个聪明的方法来做它。
编辑
这是我到目前为止拼凑起来的。虽然看起来有点太圆了
private function parseXML(xml:XML):void
{
var s:String=xml.toXMLString()
artistinfo=convertXmlToArrayCollection(s)
sort()
dispatchEvent(new XMLEvent(XMLEvent.XML_PARSED))
//artistinfo.sort()
}
private function clone(source:Object):*
{
var myBA:ByteArray=new ByteArray();
myBA.writeObject(source);
myBA.position=0;
return (myBA.readObject());
}
private function sort():void
{
var myAC:ArrayCollection=new ArrayCollection(clone(artistinfo.source));
//artistinfo=new ArrayCollection();
var amt:int=trackids.length;
var value:Number=0
var arr:*
var index:Number
for (var i:int=0; i < amt; i++)
{
value=trackids[i];
index=getItemIndexByProperty(myAC, "id", new String(value))
artistinfo[i]=myAC.getItemAt(index)
}
}
public function getItemIndexByProperty(array:ArrayCollection, property:String, value:String):Number
{
for (var i:Number=0; i < array.length; i++)
{
var obj:Object=Object(array[i])
if (obj[property].value == value)
return i;
}
return -1;
}