Спасибо!
Окончательно разобрался и понял как это всё работает после того как, этим же способом, удачно отсортировал трехмерный массив.
Добавлено через 3 часа 2 минуты
Ещё вопрос:
Вот здесь я создаю новый массив (аналогичный xml):

Код AS1/AS2:
products.push({name: n, price: p});
и сортируем по атрибуту "price".
А что если я хочу записать в новый массив несуществующее значение и сортировать по нему?
Как это можно сделать?
Например:

Код AS1/AS2:
for (i = 0; i < total; i++) {
var n:String = node.childNodes[i].attributes['name'];
var p:Number = parseInt(node.childNodes[i].attributes['price']);
var a:Number = parseInt(node.childNodes[i].attributes['priceA']);
var b:Number = parseInt(node.childNodes[i].attributes['priceB']);
var с:Number = a + b;
products.push({name:n, price:p, sum:c});
}
products.sortOn('sum',Array.DESCENDING | Array.NUMERIC);
Вот так как в примере у меня не работает.