aiky,
Спасибо большое! Очень ВАМ БЛАГОДАРЕН! :thanks: |
aiky, спешу огорчить вас, оператор delete не удаляет переменные, только свойства.
|
Предложу такой вариант...
var a = ['Молоко','Огурцы','Молоко','Сахар','Сахар','Мед','Огурцы','Сахар']; var i,b=[],c=[] for (i=0; i<a.length; i++) { b[a[i]]=(b[a[i]] || 0)+1 } for (i in b) { c[c.length]={ Name: i, All: +b[i] } } c.sort(function (a,b){return b.All-a.All}) for (i=0; i<c.length; i++) { alert(c[i].Name+'='+c[i].All) } |
Цитата:
|
aiky,
как насчёт правильного варианта делать все переменные локальными? |
Вариант ...
<script type="text/javascript"> var a = ['Молоко','Огурцы','Молоко','Сахар','Сахар','Мед','Огурцы','Сахар'], i, b = {}, c = []; for (i = 0; i < a.length; i++) a[i] in b ? b[a[i]]++ : (b[a[i]] = 1, c.push(a[i])); c.sort(function (d, e) { return b[e] - b[d] }); for (i = 0; i < c.length; i++) document.write(i + 1 + ". " + c[i] + "<br />"); </script> |
Написал вариант, а потом увидел, что он почти совпадает с вариантом ksa. Ну, всё равно выложу (проструктурировал получше, да и вывод результатов удобнее):
var arr = ['Сахар','Сахар','Молоко','Огурцы','Молоко','Молоко','Молоко','Мед','Огурцы','Сахар'], tmp_obj = {}, tmp_arr = [], i, l = arr.length; //заполняем временный объект и подсчитываем количество for (i = 0; i < l; i ++) tmp_obj[arr[i]] = (tmp_obj[arr[i]] || 0) + 1; //превращаем временный объект в массив, чтоб сортировать for (i in tmp_obj) tmp_arr.push([i, tmp_obj[i]]) tmp_arr.sort(function(a,b){return b[1] - a[1]}); alert(tmp_arr.join('; ')) |
Цитата:
|
Kolyaj,
вам действительно надо объяснить подробно, что именно я сделал? Или ваш вопрос - обычная вежливость, не требующая ответа? |
stopkran,
Во, все-таки кириллицу возможно в ключах использовать, не решился. Так гораздо все проще. |
Часовой пояс GMT +3, время: 22:23. |