Не думаю, что для этого есть однострочное исправление.
Самый простой способ, я могу видеть, делать это следующим образом:
Поместите ключевые слова в массив, так что вы можете сортировать их. Это приводит к тому, что несколько ключевых слов группируются вместе.
Теперь сделайте второй массив, чтобы удерживать пару ключ-значение для каждого ключевого слова (значение - количество вхождений). Вы можете сделать это, перейдя через первый массив и изучив каждое значение: либо это начало группы (так что добавьте новый объект kv во второй массив), либо это другое событие предыдущего ключевого слова (так что увеличивайте значение count последний объект kv).
Теперь вы можете использовать метод sortOn()для вашего второго массива, чтобы сортировать по количеству появлений каждого ключевого слова.
код (это может понадобиться фиксация - боюсь, что мой AS3 не так хорошо еще, и я не в состоянии проверить это ... пишу это на моем iPhone!) Будет выглядеть примерно так:
//put the keywords into an array, and sort them
var a1:Array=new Array();
for each (var item in keywords){
a1.push(item);
}
a1.sort();
//make an array to hold a key/value pair for
//each unique keyword, and how often it occurs
var a2:Array=new Array();
var currentKey:String="";
for each (var item in a1){
if (item!=currentKey){
//if we haven't seen this word before,
//make a new k/v pair with a count of 1
a2.push({key:item, keyCount:1});
currentKey=item;
} else {
//otherwise increment count
a2[a2.length - 1].keyCount++;
}
//now we can sort the array by keyCount
a2.sortOn("keyCount", Array:DESCENDING);
trace("3 top words are: ", a2[0], a2[1], a2[2]);
Надеюсь, это сработает для вас.