代码改变世界

题目--机试

2018-06-07 11:27  @疯狂的迈步  阅读(148)  评论(0)    收藏  举报

//评测题目: 
//题目1:
//提取url中search部分参数,www.taobao.com?a=1&b=2
function urlgetparme(){
	let url = location.search;//获取url
    let theRequest = new Object();
  	if(url.indexOf("?")!=-1){
    	let str = url.substr(1);
      	strs = str.split("&");
      	for(let i=0;i<strs.length;i++){
        	theRequest[strs[i].split('=')[0]]=unescape(strs[i].split('=')[1]);
        }
    }
  return theRequest;

}

//反省: 正则处理会好一些


//题目2:
//2个正整数字符串的相加,即‘1’+’19’——>’20’(考虑超长字符串相加)
function strAdd(a,b){
  	let splite_length=3;
	let aL=string(a),bL=string(b);
  	let resout='',c=0;
  	while(aL!=0||bL!=0){
    	let aR=aL.slice(-splite_length);bR=bL.slice(-splite_length);
      	let t =String(parseInt(aR)+parseInt(bR)+c);
        resout = t.slice(-splite_length) + resout; // 字符拼接
      	c= parseInt(t.slice(0,-splite_length)||'0');
      	aL=aL.slice(0,-splite_length)||'0';
      	bL=bL.slice(0,-splite_length)||'0';
    }
  	if(c){
    	resout = string(c)+resout;
    }
  	return resout;
}

//反省 漏了字符拼接的过程、、边界考虑完全不足,哎,要参考一下bigNumber.js这个开源项目是怎么实现的,那个才是正真的实现大数据相加。在代码里面应该体现出负数和小数处理的分支


//题目3:实现es5,es6两种方式
//写一个类Person,拥有属性age和name,拥有方法say(something)
//再写一个类Superman,继承Person,拥有自己的属性power,拥有自己的方法fly(height)

//ES5
function Person(name,age){
	this.name=name;
  	this.age=age;
  	this.say=function(){
    	//something
    }
}

function Superman(power){
	this.power=power;
  	this.fly=function(height){
    	//something
    }

}

Superman.prototype=new Person("junhey","18");



//ES6
Class Person(){
	this.age=age;
  	this.name=name;
  	this.say=function(){
    	//something
    }
}
Class Superman extends Person{
	this.power=power;
  	this.fly=function(height){
    	//something
    }
}