方法一:
雙層循環,外層循環元素,內層循環時比較值
如果有相同的值則跳過,不相同則push進數組
Array.prototype.distinct = function(){
var arr = this,
result = [],
i,
j,
len = arr.length;
for(i = 0; i < len; i++){
for(j = i + 1; j < len; j++){
if(arr[i] === arr[j]){
j = ++i;
}
}
result.push(arr[i]);
}
return result;
}
var arra = [1,2,3,4,4,1,1,2,1,1,1];
arra.distinct(); //返回[3,4,2,1]
方法二:利用splice直接在原數組進行操作
雙層循環,外層循環元素,內層循環時比較值
值相同時,則刪去這個值
注意點:刪除元素之後,需要將數組的長度也減1.
方法三:利用對象的屬性不能相同的特點進行去重
方法四:數組遞歸去重
運用遞歸的思想
先排序,然後從最後開始比較,遇到相同,則刪除
方法五:利用indexOf以及forEach
方法六:利用ES6的set
Set數據結構,它類似於數組,其成員的值都是唯一的。
利用Array.from將Set結構轉換成數組
function dedupe(array){
return Array.from(new Set(array));
}
dedupe([1,1,2,3]) //[1,2,3]
拓展運算符(...)內部使用for...of循環
let arr = [1,2,3,3];
let resultarr = [...new Set(arr)];
console.log(resultarr); //[1,2,3]