一些js常用的函数

152 阅读1分钟

1.得到两个数之前的值,且是整数,包含这两个数

function getRandomNumber(max,min){ // max是最大值
   return Math.floor(Math.random() * (max-min+1) + min);
}

2.打乱一个已有数组的顺序

const textArr = [1,2,3,4,5]

function shuffle(arr){
  let _arr = arr.slice( ) // 为了不影响原来数组的内容
  for(var i=0;i<_arr.length;i++){
    const yuanArr = _arr[i];
    const changeArr = getRandomNumber(0,i) // 用上面的第一个常用函数方法,获取一个0-i的随便哪个的值;
    _arr[i] = _arr[changeArr] // 把当前值换成这个随便哪个索引的值;
    _arr[changeArr] = yuanArr // 把这两个值互换
  };
  return _arr;
};
shuffle(textArr)

3.防抖函数

// es6实现
function debounce(func,later){ 
	let timer ;
  	return function(...args){
      if(timer){
          clearTimeout(timer)
      };
      timer = setTimeout( () => {
        func.apply(this,args)
      },later)
    }

}

// 普通实现
var debounce = function(idle, action){
  var last
  return function(){
    var ctx = this, args = arguments
    clearTimeout(last)
    last = setTimeout(function(){
        action.apply(ctx, args)
    }, idle)
  }
}

4.数组插入一个新值,放在第一个,且要删除之前如果存在此值


function insertArray (arr, val, compare, maxlen) {
    const index = arr.findIndex(compare)
    if (index === 0) {
        return true
    }
    if (index > 0) {
        arr.splice(index, 1)
    }
    arr.unshift(val) // 在数组头部插入新元素
    if (maxlen && arr.length > maxlen) {
        arr.pop() // 要是数组的长度超过了设定的最大长度,就删掉最后一个元素
    }
}

// 使用
var arr = [1,2,3];
insertArray (arr, 4, (item) => {return item == 4}, 30)