Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как посчитать количество слов в строке

Короткий ответ

Уберите пробелы по краям, разбейте строку по одному или нескольким пробелам и возьмите длину:

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 — Создаёт новый массив из элементов, прошедших проверку.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.