var arr = ['Сахар','Сахар','Молоко','Огурцы','Молоко','Мед','Огурцы','Сахар'];
arr.sort();
var cur = arr[0];
var k = 1;
var tmp = {
'arr':[],
'hash':{},
'add':function(k,val){
if(!tmp.hash[k]){
tmp.hash[k] = [];
tmp.arr.push(k);
}
tmp.hash[k].push(val);
}
}
for(var i = 1; i < arr.length; i++){
if(arr[i] !== cur){
tmp.add(k,cur);
cur = arr[i];
k = 1;
}
else k++;
}
tmp.add(k,cur);
tmp.arr.sort(function(a,b){return b - a});
arr = [];
for(var i = 0; i < tmp.arr.length; i++)
for(var j = 0; j < tmp.hash[tmp.arr[i]].length; j++) arr.push(tmp.hash[tmp.arr[i]][j]);
delete cur;
delete k;
delete tmp;
alert(arr);