Practice exercises for teaching JS loops and arrays

Some exercises I wrote for teaching at a bootcamp.

Exercise 1

Goal:

Given an array of objects, for each object, console.log a string derived from two or more attributes. The student should demonstrate use of a for-loop or foreach-method.

Prompt:

Loop through the following array to console.log a sentence describing the weather of each day:
const weeklyForecast = [ { day: 'monday', hi: 90, lo: 70 }, { day: 'tuesday', hi: 93, lo: 76 }, { day: 'wednesday', hi: 89, lo: 74 }, { day: 'thursday', hi: 91, lo: 76 }, { day: 'friday', hi: 82, lo: 71 }, { day: 'saturday', hi: 81, lo: 68 }, { day: 'sunday', hi: 86, lo: 64 }, ];
For example, each sentence would look like:
On Monday, the high will be 90 degrees and the low will be 70 degrees.

Exercise 2

Goal:

Given an array of objects, obtain an array that contains a subset of the data that has been filtered by criteria. The student should demonstrate use of a for-loop or filter-method. Note, this exercise assumes no knowledge of working with date objects, so the dates are strings.

Prompt:

CapitalTwo has an online banking website. A user’s account transaction history looks like:
const originalTransations = [ { transactionId: 't100', type: 'debit', amount: 107.15, description: 'Amazon Purchase', date: '09/01/2020' }, { transactionId: 't101', type: 'debit', amount: 15.05, description: 'QuikTrip', date: '09/01/2020' }, { transactionId: 't102', type: 'debit', amount: 9.67, description: 'Chipotle', date: '09/02/2020' }, { transactionId: 't103', type: 'debit', amount: 350, description: 'A1 Air Conditioning', date: '09/03/2020' }, { transactionId: 't104', type: 'debit', amount: 12.30, description: 'Chick Fil A', date: '09/03/2020' }, { transactionId: 't105', type: 'credit', amount: 500, description: 'Deposit', date: '09/05/2020' }, { transactionId: 't106', type: 'debit', amount: 25, description: 'DPS Service Fee', date: '09/06/2020' }, { transactionId: 't107', type: 'debit', amount: 212.31, description: 'Sprouts', date: '09/06/2020' }, { transactionId: 't107', type: 'credit', amount: 20.90, description: 'Sprouts', date: '09/06/2020' }, { transactionId: 't108', type: 'debit', amount: 11.50, description: 'Half Price Books', date: '09/07/2020' } ]
A user needs to be able to filter their transactions by the purchase amount. For example, filtering purchases that are greater than 200 should give us:
[ { transactionId: 't103', type: 'debit', amount: 350, description: 'A1 Air Conditioning', date: '09/03/2020' }, { transactionId: 't107', type: 'debit', amount: 212.31, description: 'Sprouts', date: '09/06/2020' } ]
In this exercise, show how you can loop through the originalTransactions to obtain a new array for each of the following criteria:
  • purchases less than or equal to 20
  • transactions that are whole-dollar amounts
  • transactions that are credits or occurred on 9/3/2020

Exercise 3

Goal

Given a paragraph of text, return an object containing the count of occurrences of each string of an array of strings. The student should demonstrate use of a for-loop or reduce-method.

Prompt:

RevolvingDoor is a government job board that needs to be able to aggregate key word occurrences in candidate resumes. A resume might look like:
Conan the Coder Infinite Loop Inc., 2017 - 2019 - wrote migration scripts for SQL databases - built reusable UI components with React Varlet Agency, 2016 - 2017 - created user interfaces using JS, React, and CSS - built API services with NodeJS and MongoDB InfoSysDigiTechSphere Consulting Solutions, 2015 - 2016 - built API services with in Java, Spring Boot, and SQL
Suppose an employer wants to see the keyword counts of “SQL”, “API”, and “migration”. It would look like:
const keywordOccurrences = { SQL: 2, API: 2, migration: 1 }
In this exercise, show how you can loop through the words of the resume and aggregate the counts of the following keywords: “React”, “UI”, “NodeJS”, “Java”, “Spring”, “MongoDB”. Hint: use the string .split method to get started.