Frequency Number作业学习记录

作者: TW_BBK_李江 | 来源:发表于2017-05-19 23:44 被阅读14次

    一 作业要求

    QQ截图20170519162906.jpg

    补充要求

    QQ截图20170519171754.jpg

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

    作业分解

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

    QQ截图20170519171622.jpg

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

    • 这是什么?
      Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
      懂得人一看就懂,不懂的人继续不懂。不过没关系,有时候有些工具我们会用后才会慢慢懂它。姑且理解这是一种傻瓜跟踪器吧。怎么跟踪?跟踪什么?我们以后遇到再说。
    • 下载安装
      安装教程:(http://www.runoob.com/git/git-install-setup.html)
      入门教程:(http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/)
      git的下载安装和简单使用跟着教程就是啦。比如我们在本地创建一个名叫xiaosb的版本库,具体操作如下(当前为windows系统):
      1 打开你的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
    • Nodejs和npm到底是什么?

    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

    • TDD
    QQ截图20170519204044.jpg
    • 把jasmian和webstrom结合起来
      1.用git在e盘建一个文件并使用jasmian(仅供演示,之前的已经安好)
    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;
    

    相关文章

      网友评论

        本文标题:Frequency Number作业学习记录

        本文链接:https://www.haomeiwen.com/subject/iexmzttx.html