#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);
Комментариев нет:
Отправить комментарий