:::info 数值去重 ::: 基本逻辑——双重for循环

代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title> </title>
  8. </head>
  9. <body>
  10. <script>
  11. //数组去重案列
  12. let arr = [1, 3, 5, 8, 3, 4, 5, 6, 4, 6, 7, 2, 3, 0, 4, 5, 7, 8, 6, 1, 4, 5, 6]
  13. //1. 声明一个新数组来接收新数据
  14. let newArr = []
  15. for (let i = 0; i < arr.length; i++) {
  16. let flag = '开' //3.开关的概念,当进入外层循环,flag一直是false
  17. //2.将数组arr里面的所有元素去跟新数组newArr里面的每一个元素进行比较
  18. for (let j = 0; j < newArr.length; j++) {
  19. //4. 如果有一个元素相同了,就表示新数组里面有这个元素
  20. if (arr[i] === newArr[j]) {
  21. flag = '关' //5. 当我们找到一个相同的数之后,就将flag改成true,然后退出当前循环层次的for循环(里层for循环)
  22. break
  23. }
  24. }
  25. //6. 里层循环完成之后,flag还是false的时候,就表示我们没找到相同的元素,即需要把这个元素加入新数组(如果内层的for循环里面的flag='关'成立,则不会执行下面的if语句)
  26. if (flag === '开') {
  27. newArr.push(arr[i])
  28. }
  29. }
  30. console.log(newArr);
  31. </script>
  32. </body>
  33. </html>

效果

image.png