在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());
答案不是唯一的,而且沒有標準答案,所以上面的代碼是對的也是錯的。如果數組是一個複雜物件數組呢?如果數組中包含多個Null 物件{}呢?要知道js裡面有很多特殊甚至是bug的現象,alert({}=={})看看怎麼回事...
註:如果誰有標準答案歡迎評論裡面發下讓大家學習學習。
出題者本身就不會考慮到這些問題。
不要去學習做題,在實際工作中遇到問題時高效解決問題的能力才是真正有價值的。