Как посчитать количество слов в строке
Короткий ответ
Уберите пробелы по краям, разбейте строку по одному или нескольким пробелам и возьмите длину:
const text = ' JavaScript is a fun language ';
const words = text.trim().split(/\s+/);
console.log(words.length);Результат:
5Пустая строка
Разбиение пустой строки даёт один пустой элемент. Проверьте этот случай отдельно:
const countWords = (text) => (text.trim() === '' ? 0 : text.trim().split(/\s+/).length);
console.log(''.split(/\s+/).length);
console.log(countWords(''));
console.log(countWords('one two'));Результат:
1
0
2Сколько раз встречается каждое слово
Посчитайте слова в объекте, где ключ — само слово:
const words = 'the cat and the dog and the bird'.split(' ');
const counts = {};
for (const word of words) {
counts[word] = (counts[word] ?? 0) + 1;
}
console.log(JSON.stringify(counts));Результат:
{"the":3,"cat":1,"and":2,"dog":1,"bird":1}Частая ошибка
split(' ') с одним пробелом считает каждый лишний пробел пустым словом:
console.log('one two'.split(' ').length);Результат:
3Функции из этого ответа
- String.prototype.split — Разбивает строку на массив по разделителю.
- String.prototype.trim — Удаляет пробельные символы с начала и конца строки.
- Array.prototype.filter — Создаёт новый массив из элементов, прошедших проверку.