第二次作业

第二次作业

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

posted @ 2019-09-20 17:15  humblezx  阅读(161)  评论(1编辑  收藏  举报