Проверяйте повторяющиеся слова в строке и ведите счет в javascript - PullRequest
2 голосов
/ 29 мая 2020

Я пытаюсь найти повторяющиеся слова в строке и подсчитать, сколько раз они повторялись. Как мне это сделать в javascript.

 let checkWords = "I am not gonna live forever, but I wanna live while I am alive"; 

Я ищу такой вывод I = 3 , am = 2 , not = 1 и так далее, также можно найти отдельную букву как I = 3 , a = 6 , m = 2 .

Я нашел аналогичный ответ, который пытался использовать в своей строке, который тоже работает, но может ли кто-нибудь объяснить мне, почему здесь используются obj и undefined

let str = "I am not gonna live forever, but I wanna live while I am alive",
    split = str.split(" "),
    obj = {};

for (let i = 0; i < split.length; i++) {
  if (obj[split[i]] === undefined) {
    obj[split[i]] = 1;
  } else {
    obj[split[i]]++;
  }
}

console.log(obj)

Ответы [ 3 ]

2 голосов
/ 29 мая 2020

Сначала преобразуйте данную строку в массив. Для этого используйте string.split("").

Во-вторых, создайте map, который будет хранить слово как ключ и считать как значение.

Теперь переберите StringArray и сохраните текущее слово в карта. И увеличивайте счетчик слова каждый раз, когда оно будет найдено.

Проверьте приведенный ниже код.

let words = "I am not gonna live forever, but I wanna live while I am alive";

function countRepeatedWords(sentence) {
  let words = sentence.split(" ");
  let wordMap = {};

  for (let i = 0; i < words.length; i++) {
    let currentWordCount = wordMap[words[i]];
    let count = currentWordCount ? currentWordCount : 0;
    wordMap[words[i]] = count + 1;
  }
  return wordMap;
}

console.log(countRepeatedWords(words));

Надеюсь, это вам поможет.

1 голос
/ 29 мая 2020
let checkWords = "I am not gonna live forever, but I wanna live while I am alive"

const newStr = checkWords.split(' ').reduce((acc,rec) => {
  return ({ ...acc, [rec]: (acc[rec] || 0) + 1 })
},{})

const newStr2 = checkWords.split('').reduce((acc,rec) => {
  return ({ ...acc, [rec]: (acc[rec] || 0) + 1 })
},{})

{newStr} для встречных слов {newStr2} для встречных букв

0 голосов
/ 29 мая 2020

Как подсчитать, сколько раз каждое слово появляется в строке:

  1. убрать знаки препинания из строки с помощью .replace()
  2. заменить все символы на строчные с помощью .toLowerCase()
  3. преобразовать строку в массив слов с .split()
  4. l oop через каждое слово (.forEach), добавив его к объекту подсчета слов

const result = document.getElementById('result');

let str = "I am not gonna live forever, but I wanna live while I am alive.";

// strip all punctuation from string
let strStripped = str.replace(/[,.!]/g, '');
result.innerHTML = `strStripped: "${strStripped}"\n`;

// separate string into array of lowercase words
let words = strStripped.toLowerCase().split(' ');
result.innerHTML += 'words: ' + JSON.stringify(words, null, 2);

// form object of word counts
let wordCounts = {};
words.forEach(word => {
  wordCounts[word] = (wordCounts[word] || 0) + 1;
});
result.innerHTML += '\nwordCounts: ' +
  JSON.stringify(wordCounts, null, 2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...