算法相关的复习记录-持续更新

 

一: 数组去重

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("外")}

posted @ 2020-04-29 14:36  一种风度  阅读(133)  评论(0编辑  收藏  举报