首页 > 解决方案 > 如何计算字符串中单词的频率

问题描述

我需要编写一个函数来计算函数给定参数中字符串中每个单词的频率。我想知道,最好的方法是什么?

例如,如果参数中的字符串是“Mark cow mark cow the”,那么每个单词的计数将是:

标记:1
标记:1
牛:2
该:1

我的功能:

function calcFrequencies(s){
   var a = [], b = [], prev;
   var words = s.split(" ");
    for ( var i = 0; i < words.length; i++ ) {
    }
}

只是为了澄清一下,我对你提出的任何解决方案都很好,我只是认为它可能涉及拆分和循环数组,我似乎无法弄清楚。

标签: javascriptstringfrequency

解决方案


您可以创建一个地图来跟踪每个单词的计数。

function calcFrequencies(s) {
  let count = new Map();
  var words = s.split(" ");

  words.forEach(word => {
    let c = count.get(word) || 0;  
    c++;  
    count.set(word, c);
  });

  return count;
}

let result = calcFrequencies("Mark cow mark cow the");

for (let [key, value] of result.entries()) {
  console.log(key + ": " + value);
}


推荐阅读