1、遍歷陣列法
建立乙個新陣列,然後迴圈遍歷要去重的陣列,每次判斷新陣列不包含舊陣列的值時(新陣列用indexof方法檢索舊陣列的值返回結果等於-1)將該值加入新陣列。
let oldarr = [1, 2, 3, 4, 5, 5 , 6, 7, 8, 2, 3];
let newarr = unique(oldarr);
function unique(arr)
}return hash;
}2、陣列下標判斷法
與第一種方法類似,先遍歷,然後判斷當前陣列的第i項在陣列中第一次出現的位置是否與i相等,不是則說明重複,忽略,不加入新陣列。
let oldarr = [1, 2, 3, 4, 5, 5 , 6, 7, 8, 2, 3];
let newarr = unique(oldarr);
function unique(arr)
}return hash;
}3、排序後判斷
對陣列進行排序後,將新陣列的最後乙個值與舊陣列的當前值進行比較,如果相等說明重複,不相等則新增至新陣列。
function unique(arr)
}return hash;
}4、es6的set去重
set型別:es6提供了新的資料結構set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。
set本身是乙個建構函式,用來生成set資料結構。
所以我們可以直接用set來處理陣列,但是處理完後可以用array.form方法或者擴充套件函式把它重新轉回陣列,不然得到的是set型別,對於一些有型別判斷的地方是不通過的。
4.1、 array.from轉換set型別為array
let oldarr = [1, 2, 3, 4, 5, 5 , 6, 7, 8, 2, 3];
let newarr = new set(oldarr);
console.log(newarr);
console.log(newarr instanceof array); // 此時是set型別,不是array
newarr = array.from(newarr);
console.log(newarr instanceof array);
4.2、 擴充套件函式轉換set型別為array
let oldarr = [1, 2, 3, 4, 5, 5 , 6, 7, 8, 2, 3];
let newarr = [...new set(oldarr)]; // 這個方法最簡便
js陣列去除重複資料
建立乙個新陣列,然後迴圈遍歷要去重的陣列,每次判斷新陣列不包含舊陣列的值時 新陣列用indexof方法檢索舊陣列的值返回結果等於 1 將該值加入新陣列。let oldarr 1 2,3 4,5 5,6 7,8 2,3 let newarr unique oldarr function unique ...
去除陣列重複資料
原始陣列 1,2,1,2,3,4,5 結果陣列 1,2,3,4,5 函式 function removesame arr for var i 0 i 4.過程 1 第一輪 i 0 i 7 i j 1 j 7 i 0,j 1,1 2不等,j 1.i 0 j 2,1 1相等 去除第乙個 1,陣列長度變為...
去除重複數
這是一道外企演算法的面試題,前提是不允許使用util包之外的類,即任何集合類都不允許使用。寫出的演算法效率越高,此題得分越高,大家可以試一下。題目是輸入一串已經排序好的陣列,輸出消除重複數之後的陣列。如 輸入 輸出 消除重複數 已經排序好的陣列 author fangtengfei date 201...