展平一个数组,数组最多是二维[[3,4],[6]]=>[1,2,3,4]
const flattenOnce = (arr) => {
return [].concat(...arr)
}
展平一个数组,[[1,2],3,[[4],5]]=>[1,2,3,4,5]
const flatten = (arr) => {
return [].concat(...arr.map((n) => (Array.isArray(n) ? flatten(n) : n)))
}
函数节流
const throttle = (func, delay = 60) => {
let lock = false
return (...args) => {
if (lock) return
func(...args)
lock = true
setTimeout(() => {
lock = false
}, delay)
}
}
const throttle = (func, delay = 300, I = null) => {
return (...args) => {
clearInterval(I)
I = setInterval((...args) => func(...args), delay)
}
}
柯里化函数
const curry = (func) => {
const g = (...allArgs) =>
allArgs.length >= func.length
? func(...allArgs)
: (...args) => g(...allArgs, ...args)
return g
}
function curry(func) {
return function curried(...allArgs) {
if (allArgs.length >= func.length) {
return func.apply(this, allArgs)
} else {
return function (...args) {
return curried.apply(this, args.concat(allArgs))
}
}
}
}