四種陣列去重
阿新 • • 發佈:2019-02-01
var arr = [1,5,8,93,3,4,4,4,3,2,5,8,9,11];
- one
簡單粗暴,把每一個數都與其後邊的每一個數比較,相同的則刪掉後面重複的
function distinct(arr) {
let alen = arr.length;
for(let i = 0;i<alen;i++){
for(let j = i+1;j<alen;j++){
if(arr[i] == arr[j]){
arr.splice(j,1 );
alen--; // 長度發生變化
j--; // 每刪除一個數,陣列下標本來的位置就會被其他數給填了
}
}
}
return arr;
}
- two
把陣列先排序,構建新陣列,每次用原陣列的元素與新陣列的最後一個元素比較,不同則放進新陣列
function distinct2(arr){
let arr2 = arr.sort();
let dist_arr2 = [arr2[0 ]];
for(let i = 0;i<arr2.length;i++){
if(arr2[i]!== dist_arr2[dist_arr2.length-1]){
dist_arr2 .push(arr2[i]);
}
}
return dist_arr2 ;
}
- three
ES6 的 set 與 … 去重
var dist_arr3 = [...new Set(arr)];
- four
indexOf 下標值為 i 的數,如果其第一次出現的位置是 i ,則放進新的陣列
// indexOf()方法返回在陣列中可以找到一個給定元素的第一個索引,如果不存在,則返回-1。
function distinct4(arr){
var dist_arr4 = [];
for(let i = 0;i<arr.length;i++){
if(arr.indexOf(arr[i]) == i ){
dist_arr4 .push(arr[i]);
}
}
return arr;
}