Javascript 计算一个单词的重复次数

Javascript 计算一个单词的重复次数,javascript,string,object,Javascript,String,Object,我正在编写一个名为“countWords”的函数 给定一个字符串,“countWords”返回一个对象,其中每个关键字都是给定字符串中的一个单词,其值为该单词在给定字符串中出现的次数 注: *如果给定一个空字符串,它应该返回一个空对象 function countWords(str) { var obj = {}; var split = str.split(" "); return split; } var output = countWords('ask a bunch g

我正在编写一个名为“countWords”的函数

给定一个字符串,“countWords”返回一个对象,其中每个关键字都是给定字符串中的一个单词,其值为该单词在给定字符串中出现的次数

注:
*如果给定一个空字符串,它应该返回一个空对象

function countWords(str) {
  var obj = {};

  var split = str.split(" ");

  return split;
}

var output = countWords('ask a bunch get a bunch'); 
console.log(output); // --> MUST RETURN {ask: 1, a: 2, bunch: 2, get: 1}

你有什么想法吗?

所以你可以使用javascript映射来实现这样的效果:

var myMap = new Map();
myMap.set(keyString, count);
并访问密钥的值,如下所示:

myMap.get(keyString);

有关更多信息,您可以在这里阅读

我不会给您完整的代码(这不是家庭作业的意义),但我会尝试让您自己解决问题

到目前为止,您已经获得了一系列单词

接下来,让我们声明一个对象,我们可以稍后分配属性

然后我们将迭代数组,如果数组元素还没有作为键存在于对象中(如果(!obj[array[i]]),我们将创建一个新属性,元素名称和值为1。(obj[array[i]=1;)

如果元素是该对象的键,则让我们增加其值。 (obj[array[i]]++;)


然后返回对象。

闻起来像作业?:)请在询问堆栈溢出问题之前做一些研究。请看。关于计算字符串中出现的单词数量,她有上百个问题。选择一个显示在右侧相关部分的问题,然后按照它进行操作。除了
返回拆分
,你还有什么问题你试过了吗?这不能解决问题(需要返回一个对象),问题无法解决。嗨@Jonasw,myMap是一个map对象,所以我猜返回myMap就是返回一个对象,不是吗?可以做的是检查myMap.get(“word”)是否存在-如果它确实获得了值,则将其增加1,然后再次设置。如果键不存在,则设置它…就这么简单,但向初学者建议映射不是最好的主意。在这种情况下,也不必使用映射。映射是一个对象,但不是对象。@Jonasw我有点不同意,而不是完成OP的hom作业和教学OP nothing,BroBan给出了一个非常有用的答案。还有,为什么要教初学者(ab)在有现成的
Map
和简单的描述性界面的情况下使用对象呢?@le_m yes shure。我很欣赏任何其他信息(我不是投票人).但如果问题中有要求,回答者应注意OP,该要求未得到满足。。。