Страницы

Поиск по вопросам

воскресенье, 9 февраля 2020 г.

Посчитать количество каждого символа или слов в строке (короткое решение) [дубликат]

#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);

Комментариев нет:

Отправить комментарий