Javascript 去除數組的重複元素

來源:互聯網
上載者:User

我開啟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({}=={})看看怎麼回事...

註:如果誰有標準答案歡迎評論裡面發下讓大家學習學習。

出題者本身就不會考慮到這些問題。

不要去學習做題,在實際工作中遇到問題時高效解決問題的能力才是真正有價值的。

需要注意的地方補充:

有個問題應該注意下
arr[j]==i 您這裡貌似 是指當數組元素 為number類型時的相等性判斷...
但是往往我們可能要對不同類型做 相等性判斷... 這個是實際應用時應該考慮的問題

1!=new Number(1)的情況
null==undefined 的情況

0=="0" 的情況 等等

所以 顯然 簡單的== 和===都是不合適的.
應該獨立實現一個 equals 方法 做相等性判斷... 要根據需求 設定規則

我舉的例子正是針對number類型的數組的,目的是對“面試啥做題”表達一種態度。實際應用中應該根據實際需求去考慮。除非實際工作中要求或者我是個js學術研究者,否則我是不會獨立去實現一個equals方法的。國外的開發員往往遵循一個信條:“Do The Simplest Thing That Could Possibly Work”,意思大概即“不要過度設計,適用至上”,我這幾年的工作經驗也常常印證著這個道理。不知道你怎麼看。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.