Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 08.10.2011, 00:03
Профессор
Отправить личное сообщение для Dorian_bs Посмотреть профиль Найти все сообщения от Dorian_bs
 
Регистрация: 24.03.2011
Сообщений: 217

aiky,
Спасибо большое! Очень ВАМ БЛАГОДАРЕН!
Ответить с цитированием
  #12 (permalink)  
Старый 08.10.2011, 00:26
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

aiky, спешу огорчить вас, оператор delete не удаляет переменные, только свойства.
Ответить с цитированием
  #13 (permalink)  
Старый 08.10.2011, 09:05
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Предложу такой вариант...

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)
}
Ответить с цитированием
  #14 (permalink)  
Старый 08.10.2011, 10:46
Аватар для aiky
Аспирант
Отправить личное сообщение для aiky Посмотреть профиль Найти все сообщения от aiky
 
Регистрация: 06.04.2010
Сообщений: 90

Сообщение от Sweet
спешу огорчить вас, оператор delete не удаляет переменные, только свойства.
Да, виноват, варианта 2 - инициализирвать временные переменные без var, либо как элементы объекта tmp.
Ответить с цитированием
  #15 (permalink)  
Старый 08.10.2011, 12:08
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

aiky,
как насчёт правильного варианта делать все переменные локальными?
Ответить с цитированием
  #16 (permalink)  
Старый 08.10.2011, 12:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Вариант ...
<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>
Ответить с цитированием
  #17 (permalink)  
Старый 08.10.2011, 15:06
Аспирант
Отправить личное сообщение для stopkran Посмотреть профиль Найти все сообщения от stopkran
 
Регистрация: 12.12.2009
Сообщений: 54

Написал вариант, а потом увидел, что он почти совпадает с вариантом 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('; '))

Последний раз редактировалось stopkran, 08.10.2011 в 15:09.
Ответить с цитированием
  #18 (permalink)  
Старый 08.10.2011, 16:11
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от stopkran
(проструктурировал получше
Писать всё в одну строчку называется получше проструктурировал?
Ответить с цитированием
  #19 (permalink)  
Старый 08.10.2011, 17:32
Аспирант
Отправить личное сообщение для stopkran Посмотреть профиль Найти все сообщения от stopkran
 
Регистрация: 12.12.2009
Сообщений: 54

Kolyaj,
вам действительно надо объяснить подробно, что именно я сделал? Или ваш вопрос - обычная вежливость, не требующая ответа?
Ответить с цитированием
  #20 (permalink)  
Старый 08.10.2011, 21:08
Аватар для aiky
Аспирант
Отправить личное сообщение для aiky Посмотреть профиль Найти все сообщения от aiky
 
Регистрация: 06.04.2010
Сообщений: 90

stopkran,
Во, все-таки кириллицу возможно в ключах использовать, не решился.
Так гораздо все проще.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление элементов через splice. возможно ли оптимизировать? Storan Общие вопросы Javascript 0 01.10.2011 21:16
Вывод переменного по количеству элементов массива из json ArmagedDance Элементы интерфейса 4 08.06.2011 10:45
Как ограничить количество элементов (списков <li>) массивов Naum Элементы интерфейса 2 04.04.2011 11:56
Сделать список multiple select с сортировкой элементов Nargiza Элементы интерфейса 2 17.08.2010 14:44
Сортировка элементов списка тупым способом ururu Events/DOM/Window 9 11.01.2010 01:41