Código funcional de filtro de valores utilizando a função curry
Por: Raezir • 23/11/2021 • Trabalho acadêmico • 395 Palavras (2 Páginas) • 94 Visualizações
let curry = (fn) => {
if(typeof fn !== 'function'){
throw Error('No function provided');
}
return function curriedFn(...args){
if(args.length < fn.length){
return function(){
return curriedFn.apply(null, args.concat( [].slice.call(arguments) ));
}
}
return fn.apply(null, args);
}
}
const filtro = (vl1,vl2,vl3,vl4) => {
if(vl2=="" && vl4!="" && vl3!=null){
return vl1.filter((item)=>vl3(item.cargaHoraria) && item.categoria==vl4)
}
if(vl4=="" && vl2!="" && vl3!=null){
return vl1.filter((item)=>(item.titulo.search(vl2))>=0 && vl3(item.cargaHoraria))
}
if(vl2=="" && vl4=="" && vl3!=null){
return vl1.filter((item)=>vl3(item.cargaHoraria))
}
if(vl2=="" && vl4!="" && vl3==null){
return vl1.filter((item)=>item.categoria==vl4)
}
if(vl4=="" && vl2!="" && vl3==null){
return vl1.filter((item)=>(item.titulo.search(vl2))>=0)
}
if(vl2!="" && vl4!="" && vl3==null){
return vl1.filter((item)=>(item.titulo.search(vl2))>=0 && item.categoria==vl4)
}
if(vl2=="" && vl4=="" && vl3==null){
return vl1
}
return vl1.filter((item)=>(item.titulo.search(vl2))>=0 && vl3(item.cargaHoraria) && item.categoria==vl4)
}
curry(filtro)([{titulo: "Exercício de academia" , cargaHoraria: 10 , categoria: "curso"},
{titulo: "dasdasdsa academia" , cargaHoraria: 20 , categoria: "curso"},
{titulo: "fdsfdsfsd academia" ,
...