1. 数组去重的几种方式

  1. var a = [1,1,2,2,33,4,5,6,1,2]
  2. 1.最简单的
  3. var s = Array.from(new Set(a))
  4. //上下结果一样,记得s要大写
  5. Array.from(new Set(a))
  6. 或者
  7. [...new Set(a)]
  8. 2.用一个for循环
  9. var a = [1,1,2,2,33,4,5,6,1,2]
  10. var s = []
  11. for(item of a){
  12. if(!s.includes(item)){
  13. s.push(item);
  14. }
  15. }
  16. 3.用原生js双重for循环
  17. var a = [1, 1, 2, 2, 33, 4, 5, 6, 1, 2]
  18. for(var i = 0;i<a.length;i++){
  19. for (let j = i+1; j < a.length; j++) {
  20. if (a[i] === a[j]) {
  21. a.splice(j,1)
  22. j--;//需要--不然检查不到删除后补上的数
  23. }
  24. }
  25. }
  26. 4.map.可以解决数组去重
  27. 找到数组中重复的数,找到数组中第一个非重复的数
  28. function removal(arr){
  29. let hashMap = new Map();
  30. let result = [];
  31. for(item of arr){
  32. if(hashMap.has(item)){
  33. hashMap.set(item,true);//将重复的键名的值设为true即为重复了
  34. }else{
  35. hashMap.set(item,false);//将第一次添加的键名的值设为false即为没重复了
  36. result.push(item);//将没重复的添加进数组
  37. }
  38. }
  39. return result;
  40. }
  41. let arr = [1,1,1,1,2,2,2,3,4,'a','b','a']
  42. console.log(removal(arr));
  43. //用来查找储存重复的第一个元素,想找所有就push数组再返回
  44. for( let [key,value] of hashMap.entries()){
  45. if(value === false){
  46. return key
  47. }
  48. }

2. 冒泡排序

冒泡排序本质上就是使用数组内元素两两比对,前面大的往后移动,前面小就不变,第一次比较完最大的一个在最后,所以最后一个不需要比较了。
//先前那一种是把最小的数比较出来放在第一个

  1. var a = [1,9,3,4,2,70,432,123,5,7,22,12]
  2. for (let i = 0; i < a.length-1; i++) {//外层控制轮数
  3. for (let j = 0; j < a.length-1-i; j++) {//内层控制比较次数
  4. if (a[j]>a[j+1]) {
  5. let c = 0;
  6. c=a[j];
  7. a[j]=a[j+1];
  8. a[j+1]=c;
  9. }
  10. }
  11. }

3. 快速排序