// 输入一个值,返回其数据类型
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>