Помогите пожалуйста со счетчиком.
-
Есть список со значениями в разброс. В итоге требуется подсчитать количество повторений каждого значения и получить данные в таком виде: 11;Апельсин, 3;Банан, 7;Груша, 3;Слива, 6;Яблоко
Сделала по этому принципу. (
Сортируем список через экшн "Сортировать".
Заводим счетчик повторений каждого числа. Устанавливаем его на 1.
В foreach с первым элементом ничего не делаем и сохраняем его в переменную. Со всеми остальными:если элемент равен предыдущему, увеличиваем счетчик на 1 и сохраняем его в переменную. если не равен, то пишем в ответ счетчик повторений/количество элементов в массиве x 100, после чего устанавливаем счетчик снова на 1 и сохраняем текущий элемент в переменную.)
Считает все правильно, но проблема в том, что в нужном мне списке более миллиона значений, и эта конструкция обрабатывает его очень медленно . Подсказали, что можно сделать с помощью js
const Counter = () => {
let counts = Object.create(null);
return {
update(el) {
if (el in counts)
counts[el] += 1;
else
counts[el] = 1;
},
get(el) {
return counts[el] || 0;
},
result() {
return counts;
},
};
};
c = Counter();
c.update("123");
c.update("123");
c.update("12312");
console.log(c.result());
console.log(c.get(123));Но что из этого куда прописывать, я разобраться не могу, помогите пожалуйста. 0_1553073283119_counter.xml
-
@wwwin
Медленно отрабатывает именно сортировка или перебор элементов?
-
@xclsv Медленный перебор элементов. За сутки 20% списка обработал.
-
@wwwin Интересно как вам это удалось. тк это занимает секунду, ну пускай пару секунд.
-
@usertrue В целевом списке больше миллиона строк.
-
@wwwin Ну и что, это всеравно дело нескольких секунд при грамотном подходе.
-
@usertrue Согласна. Мне в Пайтоне сделали - обработка заняла 7 секунд. Однако мне нужно этот функционал прикрутить к своему скрипту. То, что у меня получилось - в скрипте в первом посте, однако работает медленно. Поэтому я попросила помощи с реализацией грамотного подхода.
-
@wwwin может, оно работает медленно, потому вы делаете это в режиме "записи"?
-
@wwwin У меня ваш скрипт не открылся, сейчас накидаю пример
-
@wwwin Вот скриптик, список из 10 миллионов чисел у меня обошел примерно за 40сек
0_1553083793985_counter.xml
-
@usertrue Спасибо большое!
-
This post is deleted!