#javascript
На этот вопрос уже даны ответы здесь:
Как посчитать количество повторений каждого значения
в массиве?
(4 ответа)
Закрыт 3 месяца назад.
Всем привет, какое самое интересное(возможно короткое) решение для подсчета количества
каждого символа в строке, а так же слов вы знаете?
Не спрашивайте зачем мне это) Просто личный интерес для развития.
Я смог придумать такую конструкцию
let str = 'Lorem ipsum dolor sit amet'.split('');
let col = {};
str.forEach(s => col[s] = str.filter(i => i == s).length);
console.log(col);
Если же делать split по пробелу, тогда считаются слова
let str = 'Lorem ipsum dolor sit amet'.split(' ');
let col = {};
str.forEach(s => col[s] = str.filter(i => i == s).length);
console.log(col);
Ответы
Ответ 1
Для таких заданий лучше всего подходит метод reduce https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce let str = 'Lorem ipsum dolor sit amet'.split('').reduce((acc, item)=> ({ ...acc, [item]: (acc[item]||0)+ 1 }), {}) console.log(str) UPDATE Здесь я использовал reduce - https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce оператор spred (...) - https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Spread_syntax Стрелочную функцию https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Functions/Arrow_functionsОтвет 2
Не знаю, короче ли, но за один проход let str = 'Lorem ipsum dolor sit amet'.split(''); let col = {}; str.forEach(s => col[s] = col[s]+1 || 1); console.log(col);
Комментариев нет:
Отправить комментарий