Я искал сортировку массивов массивов. До сих пор я видел такие вещи, как сортировка в порядке возрастания и убывания. То, что я ищу, - это выяснить, как сортировать arraycollection на основе порядка значений в другом массиве.Сортировка коллекции массивов на основе значения массива в flex
Для примера:
У меня есть массив, содержащий 10 числовых значений. У меня также есть arraycollection. Одно из свойств каждой записи arracycollection соответствует одному из значений в предыдущем массиве.
Я хочу, чтобы иметь возможность сортировать arraycollection на основе порядка значений в массиве.
Каков наилучший способ для этого?
Я думал о том, чтобы пройти первый массив, получив первое значение, найдя запись в arraycollection с этим значением, а затем добавив его к новому массиву arraycollection, но, похоже, он длинный, и я надеялся, что может быть умный способ сделать это.
EDIT
Это то, что я кусочкам до сих пор. Кажется, что слишком много вокруг, хотя
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;
}