zoukankan      html  css  js  c++  java
  • 算法相关的复习记录-持续更新

    一: 数组去重

    var arr=['12','32','89','12','12','78','12','32'];

        // 最简单数组去重法,使用indexof()

        function unique1(array){

            var n = []; //一个新的临时数组

            for(var i = 0; i < array.length; i++){ //遍历当前数组

                if (n.indexOf(array[i]) == -1)

                    n.push(array[i]);

            }

            return n;

        }

        arr=unique1(arr);

    二:冒泡排序

      var arr = [29,45,51,68,72,97];

      //外层循环,控制趟数,每一次找到一个最大值

      for (var i = 0; i < arr.length - 1; i++) {

        // 内层循环,控制比较的次数,并且判断两个数的大小

        for (var j = 0; j < arr.length - 1 - i; j++) {

          // 白话解释:如果前面的数大,放到后面(当然是从小到大的冒泡排序)

          if (arr[j] > arr[j + 1]) {

            var temp = arr[j];

            arr[j] = arr[j + 1];

            arr[j + 1] = temp;

          }

        }

      }

    三:计算数组各项重复的次数

    var arr=['胡将','胡将','hujiang','胡将','胡江','hujiang'];

    var obj={};

    arr.sort();    //先排序

    for(var i=0;i<arr.length;){

        var con=0;

        for(var j=i;j<arr.length;j++){

            if(arr[i]===arr[j]){

                con++

            }

        }

        obj[arr[i]]=con;

        i=i+con;    //跳过重复的值

    }

    console.log(obj);  //{ hujiang: 2, '胡将': 3, '胡江': 1 }

    四:ES6的SET使用

      add: 添加某个值。 ckear 清空 。delete。 foreach 遍历。 has ,返回布尔,是否存在

      数组去重  var arr = [1,2,3,3,1,4]; [...new Set(arr)]; // [1, 2, 3, 4]

      并集var a = new Set([1, 2, 3]); var b = new Set([4, 3, 2]); var union = new Set([...a, ...b]); // {1, 2, 3, 4}

      交集var a = new Set([1, 2, 3]); var b = new Set([4, 3, 2]); var intersect = new Set([...a].filter(x => b.has(x))); // {2, 3}

      差集 var a = new Set([1, 2, 3]); var b = new Set([4, 3, 2]);

      var diffA = new Set([...a].filter(x => !b.has(x))); // {1}

      var diffB = new Set([...b].filter(x => !a.has(x)));  

      var diffAll = new Set(...diffA,...diffB)

    五:纯js实现点击一个圆

      |AB|=Math.abs(Math.sqrt(Math.pow(X2-X1),2)+Math.pow(Y2-Y1,2)))

      Math.abs()求绝对值

      Math.pow(底数,指数)

      Math.sqrt()求平方根  

      document.οnclick=function(e){

      var r=50;//圆的半径

      var x1=100,y1=100,x2= e.clientX;y2= e.clientY;

      //计算鼠标点的位置与圆心的距离

      //直角三角形a² * b² = c²

      var len=Math.abs(Math.sqrt(Math.pow(x2-x1,2)+Math.pow(y2-y1,2)));

      if(len<=50){console.log("内")}else{console.log("外")}

  • 相关阅读:
    专用学习笔记
    百度地图API试用--(初次尝试)
    学习进度条
    AAAA
    HBase集成(准备篇)
    软件工程学期总结
    【操作系统】实验四 主存空间的分配和回收
    《构建之法》8、9、10章
    金融计算器app的下载情况
    操作系统 实验三 进程调度模拟程序
  • 原文地址:https://www.cnblogs.com/yasoPeng/p/12802067.html
Copyright © 2011-2022 走看看