网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
Person.prototype.eat=function (){
console.log(this.name+‘吃饭’)
}
const p1=myNew(Person,‘jakc’)
p1.eat()
// jack吃饭
## 柯里化
1. 函数柯里化就是我们给一个函数传入一部分参数,此时就会返回一个函数来接收剩余的参数,后面执行返回的那个函数
2. 将函数的一个参数拆分为两个乃至更多参数
function curry(func){
return function curried(…args){
// 传入的参数大于等于原始函数func的参数个数,则直接执行该函数
if(args.length >= func.length){
return func.apply(this, args)
}
/**
* 传入的参数小于原始函数fn的参数个数时
* 则继续对当前函数进行柯里化,返回一个接受所有参数(当前参数和剩余参数) 的函数
*/
return function (…args2){
return curried.apply(this,args.concat(args2))
}
}
}
function sum(a,b,c){
return a+b+c
}
const curriedSum=curry(sum)
console.log(curriedSum(1,2,3))
console.log(curriedSum(1)(2,3))
console.log(curriedSum(1)(2)(3))
// 输出结果都为6
## 扁平化数据
const newArr=[
{
id: 'a',
pid: 0,
value: '陕西',
children:[
{
id: 1,
pid: 'a',
value: '西安',
children:[
{id: 301, pid: 1, value: '雁塔区'},
{id: 302, pid: 1, value: '高新区'}
]
},
{
id: 2,
pid: 'a',
value: '渭南',
children:[]
},
{
id: 3,
pid: 'a',
value: '咸阳',
children:[]
},
]
},
{
id: 'b',
pid: 0,
value: '广东',
children:[
{
id: 11, pid: 'b', value: '广州',children:[]
},
{
id: 12, pid: 'b', value: '深圳',children:[]
},
{
id: 13, pid: 'b', value: '潮汕', children:[]
}
]
}
]
function toLine(data,result=[]){
data.forEach(item=>{
if(item.children){
result.push({
id:item.id,
pid:item.pid,
value:item.value,
})
toLine(item.children,result)
}else {
result.push({
id:item.id,
pid:item.pid,
value:item.value,
})
}
})
return result
}
toLine(newArr)
扁平化后数据
[
{id: ‘a’, pid: 0, value: ‘陕西’},
{id: 1, pid: ‘a’, value: ‘西安’},
{id: 301, pid: 1, value: ‘雁塔区’},
{id: 302, pid: 1, value: ‘高新区’},
{id: 2, pid: ‘a’, value: ‘渭南’},
{id: 3, pid: ‘a’, value: ‘咸阳’},
{id: ‘b’, pid: 0, value: ‘广东’},
{id: 11, pid: ‘b’, value: ‘广州’},
{id: 12, pid: ‘b’, value: ‘深圳’},
{id: 13, pid: ‘b’, value: ‘潮汕’},
]
## 树状化数据
var data=[
{pid:0,id:‘a’,value:‘陕西’},
{pid:‘a’,id:1,value:‘西安’},
{pid:1,id:301,value:‘雁塔区’},
{pid:1,id:302,value:‘高新区’},
{pid:‘a’,id:2,value:‘渭南’},
{pid:‘a’,id:3,value:‘咸阳’},
{pid:0,id:‘b’,value:‘广东’},
{pid:‘b’,id:11,value:‘广州’},
{pid:‘b’,id:12,value:‘深圳’},
{pid:‘b’,id:13,value:‘潮汕’},
];
function toTree(data,pid) {
function tree(pid){
let arr=[]
data.filter(item=> {
return item.pid === pid // 过滤下与传入的pid(最顶层的pid号)相等的item,也就代表是最顶层,
}).forEach(item=>{
arr.push({
id:item.id,
pid:item.pid,
value:item.value,
children:tree(item.id) // 递归调用tree,渲染相同id的一组
})
})
return arr
}
return tree(pid)
}
const newArr=toTree(data,0) // 传入的0代表最顶层数据的pid是0
渲染后树状结构
[
{
id: ‘a’,
pid: 0,
value: ‘陕西’,
children:[
{
id: 1,
pid: ‘a’,
value: ‘西安’,
children:[
{id: 301, pid: 1, value: ‘雁塔区’},
{id: 302, pid: 1, value: ‘高新区’}
]
},
{
id: 2,
pid: ‘a’,
value: ‘渭南’,
children:[]
},
{
id: 3,
pid: ‘a’,
value: ‘咸阳’,
children:[]
},
]
},
{
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!