第二次作业
第二次作业
git地址 | https://github.com/BetterZxx |
---|---|
git用户名 | BetterZxx |
学号后五位 | 62624 |
博客地址 | https://www.cnblogs.com/humblezx |
作业链接 | https://www.cnblogs.com/harry240/p/11515697.html |
1.环境
-
浏览器
-
nodejs
2.克隆项目
-
在https://github.com/BetterZxx/Calculator fork项目
-
克隆fork的项目到本地
-
查看分支及提交信息
3.js代码实现
-
随机产生数据
-
处理数据
-
代码
function getCal(n){
//获取a到b的随机数
let getRandomNum = (a,b)=>~~(Math.random()*(b-a)+a)
//判断一个数是否为小数
let isFloat = (x)=>String(x).indexOf('.')<0?false:true
//获取初始数据
function getInitData (){
let data = []
while(data.length<n*4){
let arr = []
let t = Math.random()>0.5?2:3
for(var i = 0;i<t;i++){
let s = ['+','-','*','/'].sort((a,b)=>Math.random()-0.5)[0]
let after = getRandomNum(10,40)
let before = getRandomNum(10,40)*after
s === '/'?arr.push({s,before,after}):arr.push({s,before:getRandomNum(10,100),after})
}
data.push(arr)
}
return data
}
//获取处理后的数据
function getFinalData(initData){
return initData.map(item=>{
let tArr = item.reduce((totle,current,index,arr)=>{
let {before,after,s} = current
if(index===arr.length-1)
return typeof totle[totle.length-1] === 'number'?totle.concat([s,after]):totle.concat([before,s,after])
else
return s==='/'?totle.concat([before,s,after]):typeof totle[totle.length-1] === 'number'?totle.concat([s]):totle.concat([before,s])
},[])
return tArr.join('')+'='+eval(tArr.join(''))
}).filter((item)=>!isFloat(item.split('=')[1]))
}
return getFinalData(getInitData()).slice(0,n)
}
4.单元测试
-
用jest包在nodejs环境做单元测试
-
模块函数
-
测试函数
-
结果
5.运行效果
-
公告栏运行
-
导出txt
-
记事本不支持\n换行换其他编辑器打开
6.性能测试
-
利用js自带的api测试代码运行时间
-
生成一百条数据
-
生成一千条数据
7.提交上传
-
第一次提交
-
第二次提交
-
上传到github
-
pullrequest