Javascript练习2-Frequncy Number

作者: TW_徐娆 | 来源:发表于2017-05-19 19:18 被阅读13次

    羊咩咩队 徐娆

    一.git的学习与使用

    1.GET下载版本Git安装包
    2.下载安装
    3.在需要上传GIT的文件夹内右键


    Git命令行打开方式

    4.建立Git仓库,运行命令:

    $ git init
    
    建立仓库

    我们可以看到文件夹中多了一个.git的文件夹,这个文件夹就是Git用来管理我们的仓库的,不要随意地改动它。
    5.将文件放入Git仓库

    $ git add FNumber.js //将文件放入缓存区
    
    
    add
    $ git commit  -m "test" //放入本地仓库 引号中的内容是本次版本的标注
    $ git log //查看仓库
    
    
    commit

    上传成功!

    git学习教程
    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013743256916071d599b3aed534aaab22a0db6c4e07fd0000

    二、Node.js和jasmine 的安装与环境配置

    1.下载最新版本的node.js并安装
    2.打开CMD命令行
    一般来说安装了nodejs之后会自动安好npm,我们需要在命令行中安装Jasmine的框架

    $ npm install jasmine-node -g
    

    使用NPM命令安装库时,遇到 npm ERR! fetch failed https://registry.npmjs.org/xxx的问题

    NPM安装教程

    jasmine 框架的使用

    在需要建立项目的文件夹调出命令行或 git bash

    $ jasmine init //初始化框架
    

    我们可以看到出现了一个spec的目录


    打开目录,我们发现只有一个support 文件夹


    于是我们回到命令行,建立一个更完整的框架

    $ jasmine examples
    

    Good!现在我们有整个的框架了

    我们可以在webstorm 里直接打开刚才的文件夹,框架已经为我们写好了一些测试

    直接使用它!

    $ jasmine
    

    五个测试全部通过√

    是时候写我们自己的代码与测试框架了!

    三、Frequncy Number 编程练习

    任务分解 测试驱动表

    首先我们回到上文建立的框架中,修改框架。
    留下最简单的模版,写一个最简单的测试:输入空,返回空

    在js脚本中写出它的实现



    使用module的exports 方法把它暴露出来

    运行测试

    Paste_Image.png

    成功通过一个测试

    继续实现其他的用例
    测试代码:

    describe("F Number", function() {
        var FNumber= require("../../lib/jasmine_examples/FNumber");
        it("should return space", function() {
            var string = FNumber('hi');
            expect(string).toEqual('hi 1');
    
        });
        it("should return space", function() {
            var string = FNumber('hello word');
            expect(string).toEqual('hello 1\r\nword 1');
    
        });
        it("should return space", function() {
            var string = FNumber('love me love my dog');
            expect(string).toEqual('love 2\r\nme 1\r\nmy 1\r\ndog 1');
    
        });
        it("should return space", function() {
            var string = FNumber('it was the age of wisdom it was the age of foolishness it is');
            expect(string).toEqual('it 3\r\nwas 2\r\nthe 2\r\nage 2\r\nof 2\r\nwisdom 1\r\nfoolishness 1\r\nis 1');
    
        });
    
    
    
    });
    
    

    功能实现代码:

    
    
    
    var read = 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 combie = function (groupWords) {
        return groupWords.map((e) => format(e.word, e.count)).join('\r\n');
    }
    var format = function (words, count){
        return words + ' ' + count;
    }
    function FNumber(words){
        if(words !== ''){
            let intArray = split(words);
            let  groupWords = read(intArray);
                     sort(groupWords);
            return combie(groupWords);
        }
        return '';
    }
    module.exports = FNumber;
    

    运行测试



    通过~

    add到本地仓库

    上传到仓库

    仓库链接:
    https://github.com/ALmostLovers/FNumber

    相关文章

      网友评论

        本文标题:Javascript练习2-Frequncy Number

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