Javascript实践-去除数组的重复元素
在js中,如何去除指定数组中的重复元素?
这个是xx.com web前端开发的一道题,LEVIN当时知道要做题的时候,本来想直接走人的,后来想想算了,既然是朋友介绍的,总不能耍大牌。现在在这里顺便扯扯对面试做题的看法,评论里面保留大家的发言权利哈哈。
其实我讨厌做题和讨厌应试教育一样,这种东东某种程度上可以检验某个人咋地咋地,但在很大程度上过于形式。要真正看一个人怎么样,看看他之前做过的作品,或者直接让他做几道上机题还好点。当时抱着这样一种心态,试题自然草草做了一遍。。。现在想想那些题目,很简单的,就是实际工作中不大会用到。。即使临时要用到,思考之后没有头绪的话也有google大神在,当然你摒弃google愿意独自刨根问底也行,这个是了解和解决问题的方式的选择问题,因人而异。目的是一致的:了解问题,解决问题,并掌握解决问题的方法。我个人更愿意站在前人的肩膀上看问题。
好了,回来说说这个js题目,我打开firebug的console,花了30秒想,30秒写,结果如下:(x为目标数组,y是去除重复元素后的结果)
代码
var x=[1,1,3,4,5,3];
var y=[];
var tArray=function(i,arr){
var yap=false;
for(var j=0;j<arr.length;j++){
if(arr[j]==i){yap=true;break;};
}
if(!yap) arr.push(i);
};
for(var t=0;t<x.length;t++){
tArray(x[t],y);
}
alert(y.length);
alert(y.toString());
答案不是唯一的,而且没有标准答案,所以上面的代码是对的也是错的。如果数组是一个复杂对象数组呢?如果数组中包含多个空对象{}呢?要知道js里面有很多特殊甚至是bug的现象,alert({}=={})看看怎么回事...
注:如果谁有标准答案欢迎评论里面发下让大家学习学习。
出题者本身就不会考虑到这些问题。
不要去学习做题,在实际工作中遇到问题时高效解决问题的能力才是真正有价值的。