Хе хе свои фокусы покусы покажу что-ли.
Так за один проход функции можно отсекать сразу несколько дочерних массивов с максимальной длинной:

Код AS3:
private function maxLengthArraySlice(arr:Array):Array {
var retArr:Array = new Array()
var sortObj:Object = new Object();
var maxLen:uint = 0;
var arrLen:uint = 0;
var iterator:int = arr.length-1;
while (iterator >= 0) {
arrLen = (arr[iterator] as Array).length;
if (!sortObj[arrLen]) sortObj[arrLen] = [],
maxLen = Math.max(maxLen, arrLen);
(sortObj[arrLen] as Array).push(arr[iterator]);
iterator--;
}
for( var i:* in sortObj) {
if (i != maxLen) retArr = retArr.concat(sortObj[i] as Array);
}
return retArr;
}
Так получать массив с массивами определённой длины:

Код AS3:
private function lengthArraySlice(arr:Array, length:uint):Array {
var retArr:Array = [];
var sortObj:Object = new Object();
var arrLen:uint = 0;
var iterator:int = arr.length-1;
while (iterator >= 0) {
arrLen = (arr[iterator] as Array).length;
if (!sortObj[arrLen]) sortObj[arrLen] = [];
(sortObj[arrLen] as Array).push(arr[iterator]);
iterator--;
}
for( var i:* in sortObj) {
if (i == length) retArr = retArr.concat(sortObj[i] as Array);//поменять == на != если нужно удалить
//массивы опр. длинны, а не вернуть
}
return retArr;
}