JSFiddle - React, Tailwind, and code Playground
by Diana Lemen
JavaScript
const stat = [
{ name: 'Lora', score: 1.003 },
{ name: 'Lora', score: 1.003 },
{ name: 'Lora', score: 2 },
{ name: 'Max', score: 3.76 }
]
const sort = arr => {
return arr.sort((a, b) => b.score - a.score)
}
const filter = (params) => {
return (arr) => arr.filter(item => item.name === params)
}
const findAll = (params) => {
return (arr) => arr.filter(item => item.score === params)
}
const compose = (...funcs) => {
return (arr) => {
return funcs.reverse().reduce((acc, func) => func(acc), arr)
}
}
console.log(compose(filter('Lora'))(stat)) // [{ name: "Lora", score: 1.003 }, { name: "Lora", score: 1.003 }, { name: "Lora", score: 2 }]
console.log(compose(findAll(1.003), filter('Lora'))(stat)) // [{ name: "Lora", score: 1.003 }, { name: "Lora", score: 1.003 }]
console.log(compose(sort, filter('Lora'))(stat)) // [{ name: "Lora",score: 2 }, { name: "Lora",score: 1.003 }, { name: "Lora",score: 1.003 }]