双for循环数组去重,用了数组中的splice,有个数组去重
<!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>
var ary=[1,2,1,2,2,3,3,1,3,2,3];
// var cur=ary[0]
// console.log(cur); 数组中的第一项
// 原数组 1,2,1,2,2,3,3,1,3,2,3
// 当cur=1 1,2,2,2,3,3,3,2,3
// 当cur=2 1,2,3,3,3,3
// 当cur=3 1,2,3
// 1,2,3
// 双重循环去重
// 每次循环从数组中取出一项(从第一项开始) 依次跟后面的每一项进行比较
// 如果比较中有相同就将此时那一项删除掉
// [1,2,1,2,2,3,3,1,3,2,3]
// 第一次循环 i=0 cur=1 1,2,2,2,3,3,3,2,3
// 第二次循环 i=1 cur=2 1,2,3,3,3,3
// 第三次循环 i=2 cur=3 1,2,3
// splice() 会导致数组塌陷
var arr = [3, 1, 1, 2, 2, 2, 1, 1, 3, 3, 3]
// 第一次循环的时候 i=0 cur=3 3, 1, 1, 2, 2, 2, 1, 1
// 第二次循环的时候 i=1 cur=1 3, 1, 2, 2, 2
// 第三次循环的时候 i=2 cur=2 3, 1, 2
// 外层循环取出当前这一项 (用来比较的这一项)
for(var i=0;i<arr.length;i++){
var cur = arr[i]; //取出每一项
// console.log(cur); 外层循环最先取出的是3
// 用来取出当前项后面的每一项(被比较每一项)
for(var j=i+1;j<arr.length;j++){
// 1===1 j=i+1=>j=1 arr[j]
if(cur===arr[j]){
arr.splice(j,1);//splice(和当前项重复的那项,1)
j--;
}
}
}
console.log(arr);
</script>
</body>
</html>
//双for循环数组去重,如果当前项和后面被比较项不相等的话再j++
var arr = [3, 1, 1, 2, 2, 2, 1, 1, 3, 3, 3]
for(var i=0;i<arr.length;i++){
var cur=arr[i];
for(var j=i+1;j<arr.length;){
if(cur===arr[j]){
arr.splice(j,1)
}else{
j++
}
}
}
console.log(arr);