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