В
Size: a a a
p
DE
S
const gradeCalculator = (
grade,
gradeMap = [ [90, "A"], [80, "B"], [70, "C"], [60, "D"] ],
defaultGrade = "F"
) =>
gradeMap.find(([lv]) => grade >= lv)?.[1] || defaultGrade
S
function arrayBuilder(obj) {
const array = [];
for (let k in obj) {
for (let i = 0; i < obj[k]; i += 1) {
array.push(k);
}
}
return array;
}
console.log(arrayBuilder({'cats': 2, 'dogs': 1})); //=> ['cats', 'cats', 'dogs']
console.log(arrayBuilder({})); //=> []
S
const arrayBuilder = obj => Object
.entries(obj)
.reduce((a, [k, c]) =>
[...a, ...Array(c).fill(k)], [])
S
let left = (value) => ({
swap: () => right(value),
flatMap: () => left(value),
getOrElse: (defaultValue) => defaultValue
});
let right = (value) => ({
swap: () => left(value),
flatMap: (fn) => fn(value),
getOrElse: () => value
});
let select = (rate) => {
let either = right(rate);
let context = {
option: (value, predicate) => {
either = (
either
.flatMap((rate) => (
predicate(rate, value) ? left(value) : right(rate)
))
);
return context;
},
default: (value) => (
either
.swap()
.getOrElse(value)
)
};
return context;
};
let moreThan = (a) => (b) => b >= a;
let gradeCalculator = (grade) => (
select(grade)
.option('A', moreThan(90))
.option('B', moreThan(80))
.option('C', moreThan(70))
.option('D', moreThan(60))
.default('F')
);
СЧ