Vadim39
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Код: outputbar.clear(); //outputbar.writeln( "emedit ver. " + editor.version ); outputbar.visible = true; //outputbar.setfocus(); k = 0; tm = []; tm[k] = new Date().getTime(); function timer(N) { tm[++k] = new Date().getTime(); OutputBar.writeln( N + ' - ' + (tm[k] - tm[k-1]) ); } arr = []; for (i=0; i < 1000000; i++) arr.push( Math.floor(Math.random() * 1000) ) /* Таймер */ timer('Создание массива данных'); map = new ActiveXObject("Scripting.Dictionary") ; //for(i in arr) set.add(arr[i]); //Такой возможности, увы, нет... for(i in arr) if( !map.Exists(arr[i]) ) map.Add( arr[i], 1); else map.Item(arr[i])++; /* Таймер */ timer('Выбор уникальных'); outputbar.writeln ('Найденных - ' + map.Count); //outputbar.writeln( Array.from(map).sort( (a, b) => a[0] - b[0] ).join('\n') ) // так тоже тоже не получится, поэтому приходится:.. rez = []; var ks = (new VBArray(map.Keys())).toArray(); // get the keys var it = (new VBArray(map.Items())).toArray(); // get the items for (i in ks) rez.push({ks:ks[i], it:it[i]}) rez.sort(function(a, b) { return a.ks - b.ks; } ); //сортировка по порядку слов //rez.sort(function(a, b) { return a.it - b.it; } ); //сортировка по порядку количества вхождений rez1=[]; for (i in rez) rez1.push(rez[i].ks) rez2=[]; for (i in rez) rez2.push(rez[i].it) //outputbar.writeln (rez1.join('\t\t')); //outputbar.writeln (rez2.join('\t')); |
| Всего записей: 1117 | Зарегистр. 11-04-2002 | Отправлено: 03:58 17-08-2020 | Исправлено: Vadim39, 08:08 17-08-2020 |
|