使用JavaScript计算短语中每个单词的出现次数

rqdpfwrv  于 2023-10-14  发布在  Java
关注(0)|答案(3)|浏览(110)

例如,对于输入"olly olly in come free"
程序应该返回:
olly: 2 in: 1 come: 1 free: 1
测试编写为:

var words = require('./word-count');

describe("words()", function() {
  it("counts one word", function() {
    var expectedCounts = { word: 1 };
    expect(words("word")).toEqual(expectedCounts);
  });

//more tests here
});

1.如何在word-count.js文件中开始?创建一个方法words()或一个模块Words(),并在其中创建一个expectedCount方法并导出它?
1.我是把字符串当作数组还是对象?在对象的情况下,我如何开始将它们分解为单词并进行计数?

yxyvkwin

yxyvkwin1#

function count(str) {
  var obj = {};
  
  str.split(" ").forEach(function(el, i, arr) {
    obj[el] = obj[el] ? ++obj[el] : 1;
  });
  
  return obj;
}

console.log(count("olly olly in come free"));

这段代码应该得到你想要的。
为了更好地理解代码,我建议你通过数组原型函数和字符串原型函数。
为了简单地理解我在这里做什么:
1.创建一个count函数,它返回一个计数对象,用于计数所有出现的单词。
1.使用split(" ")根据空格分割字符串,得到一个数组。
1.使用forEach方法遍历拆分数组中的所有元素。
1.三进制运算符:?检查值是否已经存在,如果它确实递增1或将其赋值为1。
Array.prototypeString.prototype

thtygnil

thtygnil2#

你要这么做

word-count.js

function word-count(phrase){
    var result = {};  // will contain each word in the phrase and the associated count
    var words = phrase.split(' ');  // assuming each word in the phrase is separated by a space

    words.forEach(function(word){
        // only continue if this word has not been seen before
        if(!result.hasOwnProperty(word){
            result[word] = phrase.match(/word/g).length;
        }
    });

    return result;
}

exxports.word-count = word-count;
u91tlkcl

u91tlkcl3#

下面是计算单词数量的最简单函数:

export function wordCount(input) {
    const words = input.split(' ');
    const result = {};
    words.forEach(word => {
        result[word] = result[word] + 1 || 1;
    });
    return result;
}

相关问题