Frequency Number

GIT

什么是GIT

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如 很多 Freedesktop 的项目迁移到了 Git 上。

GIT安装

Frequency Number_第1张图片
设置用户名和邮箱.png

Nodejs

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
Node.js 的包管理器 npm,是全球最大的开源库生态系统。

环境搭建

Frequency Number_第2张图片
_GWF49GZ6DI$F%Y@DVI4{9D.png

TDD编程

Frequency Number需求

我想要一个nodejs小程序,
它可以帮我处理一段字符串信息,这段字符串信息是由英文单词组成,每两个单词之间有空格,
处理结果也为一段字符串,这个字符串应该每行只显示一个单词和它的数量,并且按出现频率倒序排列

example
input
```“it was the age of wisdom it was the age of foolishness it is”outputit 3
was 2
the 2
age 2
of 2
wisdom 1
foolishness 1
is 1`

主要代码

Frequency Number.js

var main= require('../../test.js');

describe("Word Frequency",function(){
    it("return empty string given empty string",function(){
        var result = main('');
        expect(result).toEqual('');
    });
    it("return string given one word",function(){
        var result = main('he');
        expect(result).toEqual('he 1');
    });
    it("return string given two different words",function(){
        var result = main('he is');
        expect(result).toEqual('he 1\r\nis 1');
    });
    it("return string given duplicated words",function(){
        var result = main('he he is');
        expect(result).toEqual('he 2\r\nis 1');
    });
    it("return string given words splited by multiple space",function(){
        var result = main('he    is');
        expect(result).toEqual('he 1\r\nis 1')
    });
    it("a test",function(){
        var result = main('it was the age of wisdom it was the age of foolishness it is');
        expect(result).toEqual('it 3\r\nwas 2\r\nthe 2\r\nage 2\r\nof 2\r\nwisdom 1\r\nfoolishness 1\r\nis 1')
    });

test.js

sdavar formatWordAndCount = function (words, count){
    return words + ' ' + count;
}

var group = function (wordArray ){
    return wordArray .reduce((array, word) =>{
            let entry = array.find((e) => e.word === word);
    if(entry){
        entry.count++;
    }
    else{
        array.push({word: word,count: 1});
    }
    return array;
}, []);
};
var split = function (words){
    return words.split(/\s+/);
}

var sort = function (groupWords) {
    groupWords .sort((x, y) => y.count - x.count);
}

var format = function (groupWords) {
    return groupWords.map((e) => formatWordAndCount(e.word, e.count)).join('\r\n');
}
function main(words){
    if(words !== ''){
        let wordArray = split(words);
        let  groupWords = group(wordArray);
        sort(groupWords);
        return format(groupWords);
    }
    return '';
}
module.exports = main;```

你可能感兴趣的:(Frequency Number)