Javascript 去除數(shù)組的重復(fù)元素
更新時(shí)間:2010年05月04日 17:20:58 作者:
在js中,如何去除指定數(shù)組中的重復(fù)元素?
我打開firebug的console,花了30秒想,30秒寫,結(jié)果如下:(x為目標(biāo)數(shù)組,y是去除重復(fù)元素后的結(jié)果)
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());
答案不是唯一的,而且沒有標(biāo)準(zhǔn)答案,所以上面的代碼是對(duì)的也是錯(cuò)的。如果數(shù)組是一個(gè)復(fù)雜對(duì)象數(shù)組呢?如果數(shù)組中包含多個(gè)空對(duì)象{}呢?要知道js里面有很多特殊甚至是bug的現(xiàn)象,alert({}=={})看看怎么回事...
注:如果誰有標(biāo)準(zhǔn)答案歡迎評(píng)論里面發(fā)下讓大家學(xué)習(xí)學(xué)習(xí)。
出題者本身就不會(huì)考慮到這些問題。
不要去學(xué)習(xí)做題,在實(shí)際工作中遇到問題時(shí)高效解決問題的能力才是真正有價(jià)值的。
需要注意的地方補(bǔ)充:
有個(gè)問題應(yīng)該注意下
arr[j]==i 您這里貌似 是指當(dāng)數(shù)組元素 為number類型時(shí)的相等性判斷...
但是往往我們可能要對(duì)不同類型做 相等性判斷... 這個(gè)是實(shí)際應(yīng)用時(shí)應(yīng)該考慮的問題
1!=new Number(1)的情況
null==undefined 的情況
0=="0" 的情況 等等
所以 顯然 簡(jiǎn)單的== 和===都是不合適的.
應(yīng)該獨(dú)立實(shí)現(xiàn)一個(gè) equals 方法 做相等性判斷... 要根據(jù)需求 設(shè)置規(guī)則
我舉的例子正是針對(duì)number類型的數(shù)組的,目的是對(duì)“面試啥做題”表達(dá)一種態(tài)度。實(shí)際應(yīng)用中應(yīng)該根據(jù)實(shí)際需求去考慮。除非實(shí)際工作中要求或者我是個(gè)js學(xué)術(shù)研究者,否則我是不會(huì)獨(dú)立去實(shí)現(xiàn)一個(gè)equals方法的。國外的開發(fā)員往往遵循一個(gè)信條:“Do The Simplest Thing That Could Possibly Work”,意思大概即“不要過度設(shè)計(jì),適用至上”,我這幾年的工作經(jīng)驗(yàn)也常常印證著這個(gè)道理。不知道你怎么看。
復(fù)制代碼 代碼如下:
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());
答案不是唯一的,而且沒有標(biāo)準(zhǔn)答案,所以上面的代碼是對(duì)的也是錯(cuò)的。如果數(shù)組是一個(gè)復(fù)雜對(duì)象數(shù)組呢?如果數(shù)組中包含多個(gè)空對(duì)象{}呢?要知道js里面有很多特殊甚至是bug的現(xiàn)象,alert({}=={})看看怎么回事...
注:如果誰有標(biāo)準(zhǔn)答案歡迎評(píng)論里面發(fā)下讓大家學(xué)習(xí)學(xué)習(xí)。
出題者本身就不會(huì)考慮到這些問題。
不要去學(xué)習(xí)做題,在實(shí)際工作中遇到問題時(shí)高效解決問題的能力才是真正有價(jià)值的。
需要注意的地方補(bǔ)充:
有個(gè)問題應(yīng)該注意下
arr[j]==i 您這里貌似 是指當(dāng)數(shù)組元素 為number類型時(shí)的相等性判斷...
但是往往我們可能要對(duì)不同類型做 相等性判斷... 這個(gè)是實(shí)際應(yīng)用時(shí)應(yīng)該考慮的問題
1!=new Number(1)的情況
null==undefined 的情況
0=="0" 的情況 等等
所以 顯然 簡(jiǎn)單的== 和===都是不合適的.
應(yīng)該獨(dú)立實(shí)現(xiàn)一個(gè) equals 方法 做相等性判斷... 要根據(jù)需求 設(shè)置規(guī)則
我舉的例子正是針對(duì)number類型的數(shù)組的,目的是對(duì)“面試啥做題”表達(dá)一種態(tài)度。實(shí)際應(yīng)用中應(yīng)該根據(jù)實(shí)際需求去考慮。除非實(shí)際工作中要求或者我是個(gè)js學(xué)術(shù)研究者,否則我是不會(huì)獨(dú)立去實(shí)現(xiàn)一個(gè)equals方法的。國外的開發(fā)員往往遵循一個(gè)信條:“Do The Simplest Thing That Could Possibly Work”,意思大概即“不要過度設(shè)計(jì),適用至上”,我這幾年的工作經(jīng)驗(yàn)也常常印證著這個(gè)道理。不知道你怎么看。
您可能感興趣的文章:
- JavaScript去掉數(shù)組中的重復(fù)元素
- JS實(shí)現(xiàn)數(shù)組去重,顯示重復(fù)元素及個(gè)數(shù)的方法示例
- JavaScript 數(shù)組去重并統(tǒng)計(jì)重復(fù)元素出現(xiàn)的次數(shù)實(shí)例
- JS中去掉array中重復(fù)元素的方法
- javascript中去除數(shù)組重復(fù)元素的實(shí)現(xiàn)方法【實(shí)例】
- JavaScript重復(fù)元素處理方法分析【統(tǒng)計(jì)個(gè)數(shù)、計(jì)算、去重復(fù)等】
- js 高效去除數(shù)組重復(fù)元素示例代碼
- js實(shí)用技巧之去除數(shù)組或者對(duì)象里重復(fù)選項(xiàng)
相關(guān)文章
javascript面向?qū)ο蟪绦蛟O(shè)計(jì)(一)
這篇文章主要介紹了javascript面向?qū)ο蟪绦蛟O(shè)計(jì),分享給大家一段代碼,注釋里講解的非常詳細(xì),有助于我們理解面向?qū)ο?,這里推薦給大家。2015-01-01
基于JS實(shí)現(xiàn)簡(jiǎn)單的隨機(jī)抽取幸運(yùn)員工系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了基于HTML+JavaScript實(shí)現(xiàn)簡(jiǎn)單的隨機(jī)抽取幸運(yùn)員工系統(tǒng),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-11-11
javascript將list轉(zhuǎn)換成樹狀結(jié)構(gòu)的實(shí)例
下面小編就為大家?guī)硪黄猨avascript將list轉(zhuǎn)換成樹狀結(jié)構(gòu)的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09
微信小程序?qū)崿F(xiàn)自動(dòng)播放視頻模仿gif動(dòng)圖效果實(shí)例
這篇文章主要給大家介紹了關(guān)于微信小程序?qū)崿F(xiàn)自動(dòng)播放視頻模仿gif動(dòng)圖效果的相關(guān)資料,通過本文介紹的方法可以實(shí)現(xiàn)自動(dòng)播放視頻,視頻無控制條無聲音且自動(dòng)循環(huán)播放,需要的朋友可以參考下2021-07-07

