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

TDD之Frequency Number练习

2017-05-19  本文已影响17人  WishToWeb

一、Frequency Number处理前准备

二、Frequency Number要求

三、Frequency Number处理过程

思路.png
var format = function (word,count){
    return word +" "+ count;
};
var group = function(wordArray){
    return wordArray.reduce((array,word) => {
            var 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(groupedWords){
    groupedWords.sort((s,y)=>y.count - x.count);
};
function main(words){
    if(words!== ''){
        var wordArray = words.split(/\s+/);
        var 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;
var main = require("./main.js");
describe("Word Frequency",function(){
    it("test1  returns empty string given empty string",function(){
        var result = main('');
        expect(result).toEqual('');
    });
    it("test2  returns string given one word",function(){
        var result = main('he');
        expect(result).toEqual('he 1');
    });
    it("test3  returns string given two different words",function(){
        var result = main('he is');
        expect(result).toEqual('he 1\r\nis 1');
    });
    it("test4  returns string given duplicated words",function(){
        var result = main('he is he');
        expect(result).toEqual('he 2\r\nis 1');
    });
    it("test5  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("test6  returns string given words splited by multiple spaces",function(){
        var result = main('he is');
        expect(result).toEqual('he 1\r\nis 1');
    });
    it("test7  returns string given words splited by multiple spaces",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');
    });
});

四、Frequency Number处理结果

总测试.png
上一篇 下一篇

猜你喜欢

热点阅读