【问题标题】:Count the recurrence of a word计算一个单词的重复次数
【发布时间】:2017-10-22 07:32:59
【问题描述】:

我正在编写一个名为“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}

有什么想法吗?

【问题讨论】:

  • 家庭作业的味道? :)
  • 请在 Stack Overflow 上提问之前做一些研究。见How to Ask。她有数百个关于计算字符串中单词出现次数的问题。选择右侧相关部分中显示的一个并按照它进行操作。
  • 除了return split,你还试过什么?

标签: javascript string object


【解决方案1】:

我不会给你完成的代码(那不是家庭作业的意义),但我会尽量让你自己解决问题。

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

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

然后我们将遍历我们的数组,如果数组元素不作为键存在于我们的对象中(if(!obj[array[i]]))那么创建一个新属性,元素名称和值 1.( obj[array[i]=1; )

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

然后返回对象。

【讨论】:

    【解决方案2】:

    所以你可以像这样使用 javascript Map:

    var myMap = new Map();
    myMap.set(keyString, count);
    

    并像这样访问键的值:

    myMap.get(keyString);
    

    更多信息你可以在这里阅读https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Map

    【讨论】:

    • 这并没有解决问题(需要返回一个对象),而且问题无法解决。
    • 嗨@Jonasw,myMap 是一个地图对象,所以我猜返回myMap 是返回一个对象,不是吗?可以做的是检查 myMap.get("word") 是否存在 - 如果确实存在,则获取其值,将其加一,然后再次设置。如果密钥不存在则设置它...就这么简单
    • 但是向初学者推荐 Map 并不是最好的主意。同样在这种情况下,也不需要使用地图。而且地图是一个对象而不是一个对象。
    • @Jonasw 我确实有点不同意,BroBan 没有完成 OP 的作业并没有教 OP,而是给出了一个非常有用的答案。另外,既然有现成的Map 和简单的描述性界面,为什么还要教初学者(ab)使用对象?
    • @le_m 是的,舒尔。我感谢任何类型的附加信息(我不是反对者)。但是,如果问题中有要求,则回答者应注意到 OP 未满足此要求...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 2013-09-21
    相关资源
    最近更新 更多