Создайте объект с ключами-словами, где значения будут частотой нахождения.
var src = ["груша", "яблоко", "апельсин", "груша", "банан", "груша", "апельсин"];
var dict = src.reduce( function(p,c){
if( p.hasOwnProperty(c)) p[c]++;
else p[c] = 1;
return p;
}, {});
// теперь нужно вывести dict в порядке убывания значений:
// создать массив объектов с двумя полями: слово и число
// и отсортировать его по убыванию поля с числом.
var arr = [], word;
for( word in dict) arr.push({ w: word, n: dict[word] });
arr.sort( function(a,b){ return b.n - a.n });
// массив arr теперь отсортирован правильно, осталось вывести:
for( var i = 0; i < arr.length; i++) console.log( arr[i].w +' - '+ arr[i].n );