js常用方法

// 输入一个值,返回其数据类型
const type = (para) => {
  return Object.prototype.toString.call(para)
}
// console.log("123")


// 判断值是否为数组
const isArr = (arr) => {
  return Array.isArray(arr)
  // true为数组,false不是
}
// console.log("123")


// 判断值是否为数字
const isNum = (num) => {
  return isNaN(num)
  // false为数字,true不是
}
// console.log("123")


const arr = ["1", "1", "1", "2", "4", "6", "2", "4", "7"]
// 数组去重方法一
const duplicateRemoval1 = (arr) => {
  return [...new Set(arr)]
}
// console.log(duplicateRemoval1(["1","1","1","2","4","6","2","4","7","8"]))

// 数组去重方法二
const duplicateRemoval2 = (arr) => {
  const obj = {};
  const newArr = [];
  return arr.filter(ele => {
    if (!obj[ele]) {
      obj[ele] = true;
      newArr.push(ele)
      return newArr;
    }
  })
}
// console.log(duplicateRemoval2(["1","1","1","2","4","6","2","4","7","8"]))

// 数组去重方法三
const duplicateRemoval3 = (arr) => {
  var result = [];
  arr.forEach(ele => {
    if (result.indexOf(ele) == -1) {
      result.push(ele)
    }
  })
  return result;
}
// console.log(duplicateRemoval3(["1","1","1","2","4","6","2","4","7","8"]))


// 字符串去重
const stringDuplicateRemova = (str) => {
  const obj = {};
  let newStr = '';
  for (let item of str) {
    if (!obj[item]) {
      obj[item] = true
      newStr += item
    }
  }
  return newStr
}
// console.log(stringDuplicateRemova("nihaoyaaaaa"))


//去除连续的字符串
const removeContinuousString = (str) => {
  return str.replace(/(\w)\1+/g, '$1')
}
// console.log(removeContinuousString("niiihaaaaoooyaaaaa"))


// 防抖
const debounce = (handle, delay) => {
  var timer = null;
  return () => {
    var _self = this;
      // _args = arguments;
    clearTimeout(timer);
    timer = setTimeout(() => {
      handle.apply(_self)
    }, delay)
  }
}

// 节流
const throttle = (handler, wait) => {
  var lastTime = 0;
  return () => {
    var nowTime = new Date().getTime();
    if (nowTime - lastTime > wait) {
      handler.apply(this);
      lastTime = nowTime;
    }
  }
}


// 深浅拷贝 
// 浅拷贝只复制指向某个对象的指针而不复制对象本身,新旧对象还是共享同一块内存
// 深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象

 上面JS,下面HTML

<body>
    <div class="btn">按钮</div>
</body>
<script>
    let btnDom = document.getElementsByClassName("btn")[0];

    // // 节流演示 (一直点击的情况下3秒执行一次)
    // btnDom.onclick =  throttle(() => {
    //     console.log("1111")
    // }, 3000 )

    // 防抖演示(一直点击间隔超过一秒才会执行)
    btnDom.onclick =  debounce(() => {
        console.log("1111")
    }, 1000 )
    
   
</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值