<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>数组去重</title>
</head>
<body>
</body>
<script type="text/javascript">
let arr = [1, 2, 5, 4, 1, 3, 8, 2, 5];
//ES6 set方法
//Set本身是一个构造函数,用来生成 Set 数据结构。它类似于数组,但是成员的值都是唯一的,没有重复的值。
let newArr1 = Array.from(new Set(arr)); // 利用Array.from将Set结构转换成数组
console.log('newArr1',newArr1);
//利用sort()排序方法,然后根据排序后的结果进行遍历及相邻元素比对。
arr = arr.sort();
let newArr2 = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] !== arr[i + 1]) {
newArr2.push(arr[i])
}
}
console.log('newArr2',newArr2)
//递归去重
let newArr3 = arr;
var len =newArr3.length;
newArr3.sort(function(a,b){return a-b});
function loop(index){
if(index>=1){
if(newArr3[index] === newArr3[index-1]){
newArr3.splice(index,1)
}
loop(index - 1);
}
}
loop(len-1);
console.log('newArr3',newArr3);
//双重for循环去重,内层循环时比较值。值相同时,则删去这个值
let newArr4 = arr;
for( let i=0;i<newArr4,length;i++){
for(let j=i+1;j<newArr4.length;j++){
if(newArr4[i] == newArr4[j]){
newArr4.splice(j,1);
j--;
}
}
}
console.log('newArr4',newArr4)
//indexof 此方法从头匹配,直到匹配到时返回第一个数组元素的下标,
let newArr5 = [];
for(let i=0;i<arr.length;i++){
if(newArr5.indexOf(arr[i]) ===-1){
newArr5.push(arr[i])
}
}
console.log('newArr5',newArr5)
</script>
</html>