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 }]