flat
flat函数是用于数组扁平化,传入参数为扁平化层数。
该方法返回一个新数组,对原数据没有影响
flat()
默认只会“拉平”一层
如果原数组有空位,flat()
方法会跳过空位。
使用reduce
来实现
arr.reduce(callback,[initialValue])
callback
J可以接收四个参数。
initialValue
为赋予初始值。
function myflat(arr){
return arr.reduce((prev,cur)=>{
return prev.concat(Array.isArray(cur)?myflat(cur):cur)
},[])
}
console.log(myflat([1,[2,[3]]])); //[1,2,3]
柯里化
实现多个参数时候递归传参
//函数柯里化
function sumFn(a,b,c){return a+ b + c};
let sum = curry(sumFn);
console.log(sum(2)(3)(5));//10
console.log(sum(2,3)(5));//10
function curry(fn,...arg){
let fnlen=fn.length
let args=arg.length
if(fnlen>args){
//当还有参数时候 进行递归传参
return function(...arg2){
return curry(fn,...arg,...arg2)
}
}else{
//当全部传完的时候执行该函数
return fn(...arg)
}
}