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