Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查找词频_Javascript - Fatal编程技术网

Javascript 查找词频

Javascript 查找词频,javascript,Javascript,我对JavaScript完全不熟悉,对如何制作单词计数器有疑问。我试图根据句子中每个单词的大小,按空格分割,为关联数组创建一个键/值对列表。关键是单词,值是句子中每个单词的计数。例如,“男人走向商店”的句子应该有如下输出: 2 男1 步行1 至1 商店1 但是,当我转到console.log数组时,它会打印出如下内容: 未定义:(随机数) 这是因为键/值对实际上没有被定义,还是代码只定义一次,然后将其全部添加到一对中?老实说,这让我觉得自己很傻。任何指向正确方向的指示都将不胜感激。我的代码如下:

我对JavaScript完全不熟悉,对如何制作单词计数器有疑问。我试图根据句子中每个单词的大小,按空格分割,为关联数组创建一个键/值对列表。关键是单词,值是句子中每个单词的计数。例如,“男人走向商店”的句子应该有如下输出:

2

男1

步行1

至1

商店1

但是,当我转到console.log数组时,它会打印出如下内容:

未定义:(随机数)

这是因为键/值对实际上没有被定义,还是代码只定义一次,然后将其全部添加到一对中?老实说,这让我觉得自己很傻。任何指向正确方向的指示都将不胜感激。我的代码如下:

函数calcWordFrequencies(用户输入){
var asscArray={};
//var userInput=prompt(“输入一个句子,程序将对每个单词进行计数。”);
userInput.split(“”);
for(userInput的var项){
if(关联中的用户输入[项目]){
asscArray[userInput[items]]+=1;
}
否则{
asscArray[userInput[items]]=1;
}
}
对于(关联账户中的var项目){
console.log(项+”:“+asscArray[项]+”\n”);
}   
}
calcWordFrequencies(“该男子走向商店”)
  • 您必须将
    userInput
    分配给
    split
  • 循环应该是
    for in
    for
    userInput
  • 使用
    toLowerCase
    忽略大小写
  • 函数calcWordFrequencies(用户输入){
    var asscArray={};
    //var userInput=prompt(“输入一个句子,程序将对每个单词进行计数。”);
    userInput=userInput.split(“”);
    for(userInput中的var项){
    var char=userInput[items].toLowerCase();
    if(字符在asscArray中){
    asscArray[char]+=1;
    }
    否则{
    asscArray[char]=1;
    }
    }
    对于(关联账户中的var项目){
    console.log(项+”:“+asscArray[项]+”\n”);
    }   
    }
    calcWordFrequencies(“该男子走向商店”)您可以使用

    const sentence = "The man walked to the store";
    
    // use split to convert sentence into an array, split by a space
    const wordCounter = sentence.split(' ').reduce((accum, word) => {
      if (!accum[word]) {  // if a property of the word doesn't currently exist, create it and set value to 1
        accum[word] = 1;
      } else {  // if a property of the word does exist, increment the current value
        accum[word]++;
      }
    
      return accum;
    }, {}) // the accum starts of as an empty object 
    
    控制台记录wordCounter的结果将是:

    {
      The: 1
      man: 1
      store: 1
      the: 1
      to: 1
      walked: 1
    }
    

    您可以使用
    映射
    将每个单词映射到其计数:

    让res=“somethingsomethingelse somethingsomethingelse”
    .拆分(“”)
    .减少(
    (a,el)=>(a.set(el,(a.get(el)+1 | | 1)),a),
    新地图
    );
    //仅用于输出目的
    
    console.log([…res])
    您需要
    userInput=userInput.split(“”)调试!学会调试
    for(userInput的var项){console.log(items,userInput[items])
    for循环不使用索引,而是使用实际数组元素: