IT培訓(xùn)網(wǎng)
IT在線學(xué)習(xí)
無論是在面試還是實際寫代碼中都會經(jīng)常遇到數(shù)組去重,那接下來我們介紹幾種數(shù)組去重的方法。
- var arr = [3,6,4,1,8,8,8,8,8,4,0,9,2,7,8,5,3,4,8,9,3];
1、第一種是聲明一個空數(shù)組,通過indexOf( )查找的方法,判斷這個新數(shù)組中有沒有該元素,如果沒有即查找結(jié)果為 -1 時,將這個元素添加到新數(shù)組的末尾。
js代碼為:
- //1.創(chuàng)建一個空數(shù)組,把arr里面的元素往空對象中添加,判斷如果空數(shù)組沒有這個元素,加
- var array = [];
- for( var i = 0; i<arr.length; i++ ) {
- if( array.indexOf(arr[i]) == -1 ) {
- array.push( arr[i] );
- }
- }
- console.log(array);
2、第二種是操作數(shù)組自身:
從第一項開始,拿該項和后面的所有項作比較,如果后面有和比較項相等的,就把后面的一項刪除。刪除的方法會改變當(dāng)前數(shù)組的長度,后面的元素會自動往前挪,所以補位上來的元素需要在進(jìn)行一次比較,讓下標(biāo)進(jìn)行自減操作。
比較的詳細(xì)過程即是為:
拿數(shù)組中第一個元素,和后面所有的元素進(jìn)行比較,如果一樣刪除后面哪一個
拿數(shù)組中第二個元素,和后面所有的元素進(jìn)行比較,如果一樣刪除后面哪一個
...
數(shù)組中所有的元素后需要和后面的進(jìn)行比較,所以需要進(jìn)行for循環(huán)的嵌套
代碼為:
- for(var i = 0; i<arr.length; i++) {
- //和后面所有的元素進(jìn)行比較
- for(var j = i+1; j<arr.length; j++) {
- if( arr[i] == arr[j] ){ //重復(fù),刪除后面的元素
- arr.splice(j,1);
- j--;
- //刪除一個元素后元素位置會自動往前挪,下標(biāo)也需要往前j--
- }
- }
- }
- console.log(arr);
3、先使用sort()方法對數(shù)組進(jìn)行排序,再比較看數(shù)組是否和相鄰的項相等,如果不同則存入新數(shù)組中
- // 先對數(shù)組進(jìn)行sort排序
- var sortArr = arr.sort();
- // 初始化結(jié)果數(shù)組并存一個值
- var res = [sortArr[0]];
- // 循環(huán)遍歷數(shù)組進(jìn)行比較
- for (var i = 1; i < sortArr.length; i++) {
- // 如果當(dāng)前的比較項與結(jié)果數(shù)組的最后一項不相等則放入
- if (sortArr[i] !== res[res.length - 1]) {
- res.push(sortArr[i]);
- }
- }
- console.log(res);
更多內(nèi)容
>>本文地址:http://uj2y2uok.com/zhuanye/2021/69054.html
聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
1 您的年齡
2 您的學(xué)歷
3 您更想做哪個方向的工作?