一.数组去重
1.直接给一个新的数组里面,利用es6的延展运算符
function fn(arr) {
return [...new Set(arr)];
}
2.利用 filter() 去重
var arr = ['apple','apps','pear','apple','orange','apps']
console.log(arr)
var newArr = arr.filter(function(item,index){
return arr.indexOf(item) === index
})
console.log(newArr)
3.利用for 循环 搭配 indexOf 去重
var arr = [1, 9, 8, 8, 7, 2, 5, 3, 3, 3, 2, 3, 1, 4, 5, 444, 55, 22];
function noRepeat(arr) {
var newArr = [];
for(var i = 0; i < arr.length; i++) {
if(newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
return newArr
}
var arr2 = noRepeat(arr);
console.log(arr2);
二.数组扁平化(就是把多维数组变成一维数组)
1.直接调用flat方法
let arr = [1, [2, [3, 4,[1,2,3]]]];
function flatten(arr) {
return arr.flat(Infinity);
}
console.log(flatten(arr));
2.使用递归实现
let arr = [1, [2, [3, 4, [1, 2, 3]]]]
function flatten(arr) {
let res = []
for(let i = 0
if(Array.isArray(arr[i])) {
res = res.concat(flatten(arr[i]))
} else {
res.push(arr[i])
}
}
return res
}
console.log(flatten(arr))
三.防抖(用户触发事件过于频繁,只要最后一次事件的操作)
let t = null;
inp.oninput = function(){
if(t !== null){
clearTimeout(t)
}
t = setTimeout(()=>{
console.log(this.value)
},500)
}
四.节流(用户触发事件过于频繁,控制执行次数)
let flag = true
window.onscroll = function() {
if(flag) {
setTimeout(() => {
console.log(123)
flag = true
},500)
}
flag = false
}
五.对象浅拷贝
let obj = {
name:'王大顺',
age:18
}
let obj2 = obj
// 方法一:Object.assign()
// let obj2 = Object.assign({}, obj)
// 方法二:解构赋值
// let obj2 = {...obj}
// 方法三:for in
// let obj2 = {}
// for(let i in obj){
// obj2[i] = obj[i]
// }
obj2.name = '王二顺'
console.log(obj.name)
console.log(obj2.name)