mirror of https://github.com/01-edu/public.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
OGordoo
a003411e1e
|
4 years ago | |
---|---|---|
.. | ||
README.md |
README.md
Curry Entries
Instructions
This exercise consists in creating curry functions to apply in the object's entries. You will have to create the following curry functions:
defaultCurry
curries two objects in which the second object overrides the values of the first. If the key is not present then add it with the corresponding value.
defaultCurry({
http: 403,
connection: 'close',
contentType: 'multipart/form-data',
})({ http: 200, connection: 'open', requestMethod: 'GET' })
// output
{
http: 200,
connection: 'open',
contentType: 'multipart/form-data',
requestMethod: 'GET'
}
mapCurry
replicates function.map
, where first entry is a function, second is an object.
mapCurry(([k, v]) => [`${k}_force`, v])(personnel)
// output
{
lukeSkywalker_force: { id: 5, pilotingScore: 98, shootingScore: 56, isForceUser: true },
sabineWren_force: { id: 82, pilotingScore: 73, shootingScore: 99, isForceUser: false },
zebOrellios_force: { id: 22, pilotingScore: 20, shootingScore: 59, isForceUser: false },
ezraBridger_force: { id: 15, pilotingScore: 43, shootingScore: 67, isForceUser: true },
calebDume_force: { id: 11, pilotingScore: 71, shootingScore: 85, isForceUser: true },
}
reduceCurry
replicates function.reduce
, where first entry is function, second is (object, initial value).
reduceCurry((acc, [k, v]) => (acc += v))({ a: 1, b: 2, c: 3 }, 0)
// output
6
filterCurry
replicates function.filter
, where first entry is function, second is object.
filterCurry(([k, v]) => typeof v === 'string' || k === 'arr')({
str: 'string',
nbr: 1,
arr: [1, 2],
})
// output
{ str: 'string', arr: [1, 2] }
Using each curry function create the following functions with a parameter personnel
:
reduceScore
that will return the total value of the scores of the persons who use the force (this function can have one additional parameter)filterForce
that will return the force users withshootingScores
equal or higher than 80mapAverage
that will return a new object with the proprietyaverageScore
that is the average of the scores for each person
Notions
- devdocs.io/javascript/global_objects/array/filter
- devdocs.io/javascript/global_objects/array/map
- devdocs.io/javascript/global_objects/array/reduce
- devdocs.io/javascript/global_objects/object/entries
- devdocs.io/javascript/global_objects/object/fromentries
- stackoverflow.com/questions/36314/what-is-currying
Code provided
all code provided will be added to your solution and doesn't need to be submited.
// prettier-ignore
const personnel = {
lukeSkywalker: { id: 5, pilotingScore: 98, shootingScore: 56, isForceUser: true },
sabineWren: { id: 82, pilotingScore: 73, shootingScore: 99, isForceUser: false },
zebOrellios: { id: 22, pilotingScore: 20, shootingScore: 59, isForceUser: false },
ezraBridger: { id: 15, pilotingScore: 43, shootingScore: 67, isForceUser: true },
calebDume: { id: 11, pilotingScore: 71, shootingScore: 85, isForceUser: true },
}