ThoughtWorks-成都信息工程学院创新实验室

Frequency Number作业学习记录

2017-05-19  本文已影响14人  TW_BBK_李江

一 作业要求

QQ截图20170519162906.jpg

补充要求

QQ截图20170519171754.jpg

将最终代码推送到github远程仓库,链接写到文章里。

作业分解

看到要求我们很多小伙伴就开始方了,先不要说这个程序该如何实现。 看到这几个陌生的名字,咦,git是啥?Nodejs又是啥?TDD?远程仓库????此时,心中有一万只那个什么在飞过。
不积跬步,无以至千里,不积小流,无以成江海。别急,我们一步一步地来!!!

QQ截图20170519171622.jpg

下面我们来一个问题一个问题地解决。
一.Git

QQ截图20170519175222.jpg

2 到D盘去安装


QQ截图20170519175247.jpg

3 用mkdir +文件名字(请不要用中文)创建你的版本库名字,比如我的文件名:xiaosb


QQ截图20170519175345.jpg

4.去你的D盘目录就会出现你加的文件啦

QQ截图20170519175436.jpg

5 到你的文件去,然后git init后就简单创建好啦,其他的常用命令跟着教程学吧!

QQ截图20170519175922.jpg
二.Nodejsnpm

Node.js是一个Javascript运行环境(runtime)。实际上它是对Google V8引擎进行了封装。V8引 擎执行Javascript的速度非常快,性能非常好。Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好。 Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。
npm是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题。

看不懂吧,那就不要管它!!!我们先学会用。

QQ截图20170519195932.jpg QQ截图20170519200017.jpg

npm install -g jasmine

安装后界面没有出现Error等字样,就是成功了。

TDD编程实现FrequenNumber

QQ截图20170519204044.jpg QQ截图20170519205949.jpg

产生的结果


QQ截图20170519210019.jpg

再在窗口输入命令

jasmine examples

得到

QQ截图20170519222534.jpg

输入

jasmine 测试

QQ截图20170519222641.jpg

测试通过,接下来我们修改框架,来写自己的代码

TDD 分解

任务分解图.jpg

测试一

QQ截图20170519233406.jpg QQ截图20170519233416.jpg
 describe("Frequency Number",function(){
    var main=require('../helpers/main');
    it("returns empty string given empty string",function(){
        var result =main('');
        expect(result).toEqual('');
    });
    it("returns string given one word",function(){
        var result =main('he');
        expect(result).toEqual('he 1');
    });
    it("returns string given two different words",function(){
        var result =main('he is');
        expect(result).toEqual('he 1\r\nis 1');
    });
    it("returns string given duplicated words",function(){
        var result =main('he is he');
        expect(result).toEqual('he 2\r\nis 1');
    });
    it("returns string given duplicated words need to be sorted",function(){
        var result =main('he is is');
        expect(result).toEqual('is 2\r\nhe 1');
    });
    it("returns string given words splited by multiple spaces",function(){
        var result =main('he    is');
        expect(result).toEqual('he 1\r\nis 1');
    });
})
var format = function(word,count){
    return word + ' '+ 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;
        },[]);
};

function main (words) {
    if(words !== ''){
        let wordArray = words.split(/\s+/);
        let groupedWords = group(wordArray);
        groupedWords.sort((x, y)=> y.count -  x.count);
        return groupedWords.map((e)=>format(e.word, e.count)).join('\r\n');
        }
       return ''
}

module.exports=main;
上一篇 下一篇

猜你喜欢

热点阅读