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.
 
 
 
 
 
 
Michele Sessa b70f111c29 docs(manipulate-entries): add prototype types for expected functions 12 months ago
..
README.md docs(manipulate-entries): add prototype types for expected functions 12 months ago

README.md

Manipulate Entries

Instructions

Create 3 functions which work like the .filter, .map and .reduce array methods, but for the entries in the grocery cart.

  • filterEntries: filters using both key and value, passed as an array ([k, v]).
  • mapEntries: changes the key, the value or both, passed as an array ([k, v]).
  • reduceEntries: reduces the entries passing keys and values as an array ([k, v]).

Create 3 additional functions that use your previously created functions and take an object as input:

  • totalCalories: that will return the total calories of a cart.
  • lowCarbs: that leaves only those items of the cart which have less than 50 grams of carbs after calculating the total amount.
  • cartTotal: that will give you the right amount of calories, proteins and so on for each item in your grocery cart.

Think about the shape of Object.entries()

Code provided

The provided code will be added to your solution, and does not need to be submitted.

// small database with nutrition facts, per 100 grams
// prettier-ignore
const nutritionDB = {
  tomato:  { calories: 18,  protein: 0.9,   carbs: 3.9,   sugar: 2.6, fiber: 1.2, fat: 0.2   },
  vinegar: { calories: 20,  protein: 0.04,  carbs: 0.6,   sugar: 0.4, fiber: 0,   fat: 0     },
  oil:     { calories: 48,  protein: 0,     carbs: 0,     sugar: 123, fiber: 0,   fat: 151   },
  onion:   { calories: 0,   protein: 1,     carbs: 9,     sugar: 0,   fiber: 0,   fat: 0     },
  garlic:  { calories: 149, protein: 6.4,   carbs: 33,    sugar: 1,   fiber: 2.1, fat: 0.5   },
  paprika: { calories: 282, protein: 14.14, carbs: 53.99, sugar: 1,   fiber: 0,   fat: 12.89 },
  sugar:   { calories: 387, protein: 0,     carbs: 100,   sugar: 100, fiber: 0,   fat: 0     },
  orange:  { calories: 49,  protein: 0.9,   carbs: 13,    sugar: 9,   fiber: 0.2, fat: 0.1   },
}

Usage

Here is a possible script to test your functions:

The value for each item in groceriesCart is the number of grams

const groceriesCart = { orange: 500, oil: 20, sugar: 480 }

console.log('Total calories:')
console.log(totalCalories(groceriesCart))
console.log('Items with low carbs:')
console.log(lowCarbs(groceriesCart))
console.log('Total cart nutritional facts:')
console.log(cartTotal(groceriesCart))

And its output:

Total calories:
2112.2
Items with low carbs:
{ oil: 20 }
Total cart nutritional facts:
{
  orange: {
    calories: 245,
    protein: 4.5,
    carbs: 65,
    sugar: 45,
    fiber: 1,
    fat: 0.5
  },
  oil: {
    calories: 9.6,
    protein: 0,
    carbs: 0,
    sugar: 24.6,
    fiber: 0,
    fat: 30.2
  },
  sugar: {
    calories: 1857.6,
    protein: 0,
    carbs: 480,
    sugar: 480,
    fiber: 0,
    fat: 0
  }
}

Notions