Rating Credit Scores: Solution Review
Solution review.
We'll cover the following...
Since score
is an array of numbers, we know map
's involved. It lets us loop and transform each score as we see fit.
What would we do with each score? Let’s review the challenge.
- At or above 800, return “{score} is excellent!”
- At or above 700, return “{score} is good”
- At or above 650, return “{score} is fair”
- At or below 649, return “{score} is poor”
Imperatively, that sounds like a bunch of if/else
statements.
Press + to interact
const reviewCreditScore = (score) => {if (score >= 800) {return `${score} is excellent!`;}if (score >= 700) {return `${score} is good`;}if (score >= 650) {return `${score} is fair`;}if (score <= 649) {return `${score} is poor`;}};console.log(reviewCreditScore(630));
Luckily though, Ramda has us covered. cond
can easily replace this logic with functions!
Press + to interact
import { cond } from 'ramda';const reviewCreditScore = cond([[(score) => score >= 800, (score) => `${score} is excellent!`],[(score) => score >= 700, (score) => `${score} is good`],[(score) => score >= 650, (score) => `${score} is fair`],[(score) => score <= 649, (score) => `${score} is poor`]]);console.log(reviewCreditScore(800));
It does look a bit confusing with all the arrows, however.
If you’d like to make the comparisons point-free, try gte
and lte
.
Press + to interact
index.js
scores.json
import { cond, gte, lte } from 'ramda';const reviewCreditScore = cond([[lte(800), (score) => `${score} is excellent!`],[lte(700), (score) => `${score} is good`],[lte(650), (score) => `${score} is fair`],[gte(649), (score) => `${score} is poor`]]);console.log(reviewCreditScore(800));
Now compose it with map
to review all the scores!
Press + to interact
index.js
scores.json
import { cond, gte, lte, map } from 'ramda';import scores from './scores.json';const reviewCreditScore = cond([[lte(800), (score) => `${score} is excellent!`],[lte(700), (score) => `${score} is good`],[lte(650), (score) => `${score} is fair`],[gte(649), (score) => `${score} is poor`]]);const reviewCreditScores = map(reviewCreditScore);console.log(reviewCreditScores(scores));
to save progress
Rating Credit Scores: Exercise
What Are They?
to save progress