Попробовал вот такой вот вариант:

Код AS3:
var arrData:Array = [
{ data: {id: 10, num: 5} },
{ data: {id: 10, num: 7} },
{ data: {id: 11, num: 3} },
{ data: {id: 1, num: 8} },
{ data: {id: 2, num: 3} },
{ data: {id: 99, num: 4} },
{ data: {id: 99, num: 2} }
];
function compare(a:Object, b:Object):int {
if (a.data.id < b.data.num) return -1;
else
if (a.data.id > b.data.num) return 1;
else return 0;
}
arrData.sort(compare);
for each(var i:Object in arrData) {
trace(i.data.id, i.data.num);
}
получил:

Код:
2 3
1 8
10 7
99 4 - WTF?
99 2 - WTF?
10 5
11 3
Что то не очень похоже на правду, я не очень понимаю как отсортировать и второй (num) параметр.
Добавлено через 1 минуту
Должно быть в оригинале:

Код:
1 8
2 3
10 5
10 7
11 3
99 2
99 4