苦逼的面试题和答案 - JavaScript篇(持续更新)
没办法,小公司不拿面试题难住人觉得不带劲,所以必须努力收集所有方面的面试题以让自己不和他们一样(好吧,我又愤青了...)
声明:
·本帖持续更新,即使老子工作了,依然更新。
·答案大部分来自网上,不标注转帖,忘博主s原谅。
1、Array 去重
方法一:
Array.prototype.uniq = function() {
var temp = {}, len = this.length;
for(var i=0; i < len; i++) {
if(typeof temp[this[i]] == "undefined") {
temp[this[i]] = 1;
}
}
this.length = 0;
len = 0;
for(var i in temp) {
this[len++] = i;
}
return this;
}
var a = ["sss","aaa","sss",4,2,3,1,1,"sss","aaa","sss",4,2,3,1,1
,"sss","aaa","sss",4,2,3,1,1,"sss","aaa","sss",4,2,3,1,1
,"sss","aaa","sss",4,2,3,1,1,"sss","aaa","sss",4,2,3,1,1
,"sss","aaa","sss",4,2,3,1,1,"sss","aaa","sss",4,2,3,1,1];
var b = [2,3,5,7];
//--------------------------时间测试开始-------------------------
start = new Date().getTime();
var c = a.concat(a).concat(b).concat(a).concat(b).concat(a)
.concat(b).concat(a).concat(b).concat(a).concat(b)
.concat(a).concat(b).concat(b).concat(a).concat(b).uniq();
document.write(c + " 长度 " + c.length);
end = new Date().getTime();
document.write(" 耗时:" + (end - start) + "ms")
//--------------------------时间测试结束--------------------------
//IE结果:sss,aaa,4,2,3,1,5,7 长度 8 耗时:15ms
//FF结果:sss,aaa,4,2,3,1,5,7 长度 8 耗时:2ms
优点:速度快,算法复杂度低;
缺点:没办法区分数据类型。
方法二:
Array.prototype.delRepeat=function(){
var newArray=new Array();
var len=this.length;
for (var i=0;i<len ;i++){
for(var j=i+1;j<len;j++){
if(this[i]===this[j]){
j=++i;
}
}
newArray.push(this[i]);
}
return newArray;
}
优点:能够判断数据类型
缺点:性能差,大数据量速度慢
浙公网安备 33010602011771号