大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 3種數組去重方法

3種數組去重方法

更新時間:2020-11-02 17:43:05 來源:動力節點 瀏覽1273次

眾所周知,數組(Array)是有序的元素序列,是用于儲存多個相同類型數據的集合。我們其實從開始學習數學的時候就已經慢慢接觸數組這一概念了,然而,在計算機語言中,數組表示把具有相同類型的若干元素按有序的形式組織起來的一種形式。在數組中,有時候難免會有重復的數據,這時候就要用到數組去重了,本文我們就一起來探究一下數組去重方法

總的來說,數組去重其實很簡單,查出數組內的重復數據,然后剔除出去,因此,數組去重方法也有很多種,但都是大同小異:


第一種是比較常規的方法

思路:

1.構建一個新的數組存放結果

2.for循環中每次從原數組中取出一個元素,用這個元素循環與結果數組對比

3.若結果數組中沒有該元素,則存到結果數組中

Array.prototype.unique1 = function(){

var res = [this[0]];

for(var i = 1; i < this.length; i++){

var repeat = false;

for(var j = 0; j < res.length; j++){

if(this[i] == res[j]){

repeat = true;

break;

}

}

if(!repeat){

res.push(this[i]);

}

}

return res;

}

var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]

alert(arr.unique1());


第二種方法比上面的方法效率要高

思路:

1.先將原數組進行排序

2.檢查原數組中的第i個元素 與 結果數組中的最后一個元素是否相同,因為已經排序,所以重復元素會在相鄰位置

3.如果不相同,則將該元素存入結果數組中

Array.prototype.unique2 = function(){

this.sort(); //先排序

var res = [this[0]];

for(var i = 1; i < this.length; i++){

if(this[i] !== res[res.length - 1]){

res.push(this[i]);

}

}

return res;

}

var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]

alert(arr.unique2());

第二種方法也會有一定的局限性,因為在去重前進行了排序,所以最后返回的去重結果也是排序后的。如果要求不改變數組的順序去重,那這種方法便不可取了。


第三種方法(推薦使用)

思路:

1.創建一個新的數組存放結果

2.創建一個空對象

3.for循環時,每次取出一個元素與對象進行對比,如果這個元素不重復,則把它存放到結果數組中,同時把這個元素的內容作為對象的一個屬性,并賦值為1,存入到第2步建立的對象中。

說明:至于如何對比,就是每次從原數組中取出一個元素,然后到對象中去訪問這個屬性,如果能訪問到值,則說明重復。

Array.prototype.unique3 = function(){

var res = [];

var json = {};

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

if(!json[this[i]]){

res.push(this[i]);

json[this[i]] = 1;

}

}

return res;

}

var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];

alert(arr.unique3());

第四種方法遍歷數組法

最簡單的去重方法,實現思路:新建一新數組,遍歷傳入數組,值不在新數組就加入該新數組中;

注意點:判斷值是否在數組的方法“indexOf”是ECMAScript5 方法,IE8以下不支持,需多寫一些兼容低版本瀏覽器代碼,源碼如下:

// 最簡單數組去重法

function unique1(array){

var n = []; //一個新的臨時數組

//遍歷當前數組

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

//如果當前數組的第i已經保存進了臨時數組,那么跳過,

//否則把當前項push到臨時數組里面

if (n.indexOf(array[i]) == -1) n.push(array[i]);

}

return n;

}


以上就是常見的幾種數組去重的方法,其實殊途同歸,最終目的還是為了剔除數組中重復的數據,避免數組的數據重復性。數組在Java基礎中也算是非常重要的內容,本文講的數組去重也只是數組眾多知識點的滄海一粟,想深入學習數組的小伙伴可以觀看本站的Java基礎教程,還有更多的挑戰在等著你!


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产成人h片视频在线观看 国产成人h综合亚洲欧美在线 | 青青青免费视频精品99 | 一本久久a久久精品vr综合 | 国产精品毛片一区二区三区 | 四虎影视免费观看免费观看 | 在线观看国产情趣免费视频 | 2046影院视频大全在线观看 | 日本中文字幕在线观看 | 久久久久久一级毛片免费无遮挡 | 777奇米影视久久激情日韩欧美 | 午夜精品在线免费观看 | 尻逼影院 | 国产探花在线观看 | 国产精品久久久久久 | 欧美三级欧美成人高清www | 在线欧美激情 | 国产福利观看 | 日本高清免费不卡在线播放 | 尤物久久99热国产综合 | 日本特黄a级高清免费大片18 | 免费一级a毛片免费观看欧美大片 | 日本一区二区网站 | 视频免费1区二区三区 | 国产情侣偷国语对白 | 亚洲 欧美 国产另类首页 | 天天干天天干天天干天天 | 久久精品99久久香蕉国产色戒 | 99热久久免费精品首页 | 久热这里 | 末成年娇小性色xxxxx视频 | 中文字幕 二区 三区 搜查官 | 日韩特级毛片 | 欧美成人伦理 | 亚洲国产中文在线 | 色爱区综合五月激情 | 97影院九七理论片男女高清 | 欧美综合视频在线 | 亚洲综合春色另类久久 | 欧美一区2区三区3区公司 | 亚洲一区二区三区高清不卡 | 国产福利91精品一区二区 |