第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

如何去掉一個數(shù)組重復(fù)的元素

如何把一個數(shù)組的重復(fù)元素去掉

正在回答

4 回答

常規(guī)思路:循環(huán)和 hash

循環(huán)的方法:思路就是:把數(shù)組元素搬運到另一數(shù)組,搬運過程中檢查 元素是否重復(fù),如有,丟棄,沒有,加入。

方法一:雖然是循環(huán),但是效率還可以。思路是 把一個數(shù)組搬運到另一新數(shù)組,比較 要搬運的數(shù)組元素 與 新數(shù)組元素的最后一個,看是否相同。

Array.prototype.delRepeat1=function(){
//先排序,因為這個方法只是對比?兩個元素,n的最后一個元素?與?this[i]
????this.sort();
????var?n=[this[0]];
????for(var?i=1;i<this.length;i++){
????//注意JS是若類型語言,避免?123?與?"123"?判斷為相等,所以此處用?!==
?????????if(this[i]!==?n[n.length?-1])?{
?????????//這一句?用?n[n.length]不行的,原因,我也不知道,希望以后探討?。?!
?????????????n.push(this[i]);
?????????}?
????}
????return?n;
}

方法二:還是循環(huán),這個效率低,因為indexOf()會從頭檢查數(shù)組元素,效率不行

具體思路差不多,復(fù)制數(shù)組時 進行比較,檢查新數(shù)組中是否存在 要插入的那個數(shù)組元素

Array.prototype.delRepeat2=function(){
//一個新的臨時數(shù)組
????var?n=[];
????for(var?i=0;i<this.length;i++){
????//?-1?表示n中沒有此元素,則把this[i]加入n中
????????if(n.indexOf(this[i])==-1)
????????????n.push(this[i]);
????}
????return?n;
}

方法三:用indexOf()的另一種方法

Array.prototype.delRepeat3=function(){
????var?n=this[0];
????//對原有數(shù)組判斷,如果第一次出現(xiàn)的位置與序列號相同,則沒有重復(fù),否則有重復(fù)
????for(var?i=1;i<this.length;i++){
????????if(this.indexOf(this[i])==i)?{
?????????????n.push(this[i]);
?????????}
????}
????return?n;
}

方法四 hash 這個方法看起來會高級一點

Array.prototype.delRepeate4?=?function(){
//n為hash表,r為臨時數(shù)組
????var?n={},r=[];
????for(var?i=0;i<this.length;i++){
????//如果hash表中沒有當(dāng)前項
????????if(!n[this[i]]){
????????//存入hash表中
????????????n[this[i]]?=true;
????????????//把當(dāng)前數(shù)組的當(dāng)前項push到臨時數(shù)組中
????????????r.push(this[i]);
????????}
????}
????return?r;
}


0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

咸魚有夢

更改一下 用 n[n.length] 是可以的,當(dāng)時在測試時寫錯了,后來證明是可以的
2016-05-13 回復(fù) 有任何疑惑可以回復(fù)我~
var result = [], isRepeated;
? ? ?for (var i = 0; i < arr.length; i++) {
? ? ? ? ?isRepeated = false;
? ? ? ? ?for (var j = 0; j < result.length; j++) {
? ? ? ? ? ? ?if (arr[i] == result[j]) { ?
? ? ? ? ? ? ? ? ?isRepeated = true;
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? ? ?}
? ? ? ? }
? ? ? ? if (!isRepeated) {
? ? ? ? ? ? result.push(arr[i]);
? ? ? ? }
? ? }


0 回復(fù) 有任何疑惑可以回復(fù)我~

for(var i=0; i<arr.length; i++){

? ? for(var j=i+1; j<arr.length; j++){

? ? ? ? if(arr[i]==arr[j]){

? ? ? ? ? ?arr.splice(j,1);

? ? ? ? ? ?j--;

? ? ? ? } ??

? ? }

}


0 回復(fù) 有任何疑惑可以回復(fù)我~

var arr = ["1","2", "3","4","5","2","3","8","9","10","11"]
var.length;
var num=[];
for(var i=0; i<lang; i++){
??? for(var j=i+1; j<lang; j++){
??????? if(arr[i]==arr[j]){
??????????? num.push(j)
??????? }? ?
??? }
}
for(var i=num.length-1; i>=0; i--){
?? ?arr.splice(num[i],1)
}

感覺應(yīng)該還有更簡便的方法.- -。我是新手-只能寫到這..

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

如何去掉一個數(shù)組重復(fù)的元素

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號