2019-10-24 防抖函数、 节流函数、冒泡排序、快速排序、 选择排序、 数组去重

1. 防抖函数

将几次操作合并为一次操作进行。设置一个计时器,规定在延迟时间后触发函数,但是在延迟时间内如果再次触发,就会取消之前的计时器。如此,只有最后一次操作能触发。代码如下:

function debounce(fn, waitTime) {

  let timer;

  return function() {

    let _this = this;

    let args = arguments;

    timer && clearTimeout(timer);

    timer = setTimeout(() => {

      fn.apply(_this, args);

    }, waitTime);

  };

}

2. 节流函数

所谓节流,就是指连续触发事件但是在 n 秒中只执行一次函数。节流会稀释函数的执行频率。

function throttle(fn, waitTime) {

  let timer;

  return function() {

    let _this = this;

    let args = arguments;

    if (!timer) {

      timer = setTimeout(() => {

        timer = null;

        fn.apply(_this, args);

      }, waitTime);

    }

  };

}

3. 冒泡排序

function bubbleSort(arr) {

  var len = arr.length;

  for (var i = 0; i < len - 1; i++) {

    for (var j = 0; j < len - 1 - i; j++) {

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

        var temp = arr[j];

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

        arr[j + 1] = temp;

      }

    }

  }

  return arr;

}

4. 快速排序

var quickSort = function(arr) {

  if (arr.length <= 1) {

    return arr;

  }

  var pivotIndex = Math.floor(arr.length / 2);

  var pivot = arr.splice(pivotIndex, 1)[0];

  var left = [];

  var right = [];

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

    if (arr[i] < pivot) {

      left.push(arr[i]);

    } else {

      right.push(arr[i]);

    }

  }

  return quickSort(left).concat([pivot], quickSort(right));

};

5. 选择排序

var example=[8,94,15,88,55,76,21,39];

function selectSort(arr){

    var len=arr.length;

    var minIndex,temp;

    for(i=0;i

        minIndex=i;

        for(j=i+1;j

            if(arr[j]

                minIndex=j;

            }

        }

    temp=arr[i];

    arr[i]=arr[minIndex];

    arr[minIndex]=temp;

    }

    return arr;

}

console.log(selectSort(example));

6. 数组去重

简单去重

function uniq(array) {

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

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

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

      temp.push(array[i]);

    }

  }

  return temp;

}

7. Class 与 extends

class Point {

  constructor(x, y) {

    this.x = x;

    this.y = y;

  }

}

class ColorPoint extends Point {

  constructor(x, y, color) {

    this.color = color; // ReferenceError

    super(x, y);

    this.color = color; // 正确

  }

}

你可能感兴趣的:(2019-10-24 防抖函数、 节流函数、冒泡排序、快速排序、 选择排序、 数组去重)