@UserTrue
Когда искал по форуму, часто встречал ответы этого пользователя. Если найдется минутка, поделитесь опытом. Пока выделил два возможных решения замены curl http. Может есть еще варианты? Какой вариант для вас лучше?
Помогите пожалуйста со счетчиком.
-
Есть список со значениями в разброс. В итоге требуется подсчитать количество повторений каждого значения и получить данные в таком виде: 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
-
@usertrue Согласна. Мне в Пайтоне сделали - обработка заняла 7 секунд. Однако мне нужно этот функционал прикрутить к своему скрипту. То, что у меня получилось - в скрипте в первом посте, однако работает медленно. Поэтому я попросила помощи с реализацией грамотного подхода.
-
@wwwin Вот скриптик, список из 10 миллионов чисел у меня обошел примерно за 40сек
0_1553083793985_counter.xml