js数组去重的4种方法:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
let arr = [1,2,4,5,5,6,4,3,5,6,9,0,23,6,89,1,3];
//数组去重
//1方法 从数组的后面往前找相同并移除
function fn1(arr){
let newArr = [...arr];
for(let i=0, len = newArr.length;i<len; i++){
let item = newArr[i];
for(let j=len; j>i; j--){
if(item === newArr[j]){
newArr.splice(j,1);
}
}
}
return newArr;
}
console.log(fn1(arr));
//2方法 遍历旧数组 在新数组里面找如果不存在就添加
function fn2(arr){
let newArr = [];
for(let i=0;i<arr.length; i++){
if(newArr.indexOf(arr[i]) == -1){
newArr.push(arr[i])
}
}
return newArr;
}
console.log(fn2(arr));
//3方法 利用set的去重性
function fn3(arr){
let newArr = Array.from(new Set(arr));
return newArr;
}
console.log(fn3(arr));
//4方法 数组标记法
function fn4(arr){
let newArr = []; //标记检测的数以存在
for(let i=0; i<arr.length; i++){
let item = arr[i];
if(newArr[item]){ //如果有就说明重复 需移除
arr.splice(i,1);
i--; //删除当前值后 后面的数下标往前挪所以还需判断当前向是否重复
}else{ //如果没有就标记以存在
newArr[item] = true;
}
}
}
</script>
</body>
</html>
let arr = [1,2,4,5,5,6,4,3,5,6,9,0,23,6,89,1,3];
运行结果如下: