HW 3 - JavaScript
In this homework, we will be covering the essentials of JavaScript for web development. Although JavaScript will be presented in this homework as a language that runs after your HTML, adding functionality here and there, it will soon become the driving force of your website with the introduction of React. For this reason, you must learn JavaScript well. This homework is designed to give you a good overview of the most important parts of JavaScript.
Q0: Read the Notes
JavaScript was designed in a rush, and it shows. It is not a beautiful language. It is confusing. For this reason, make sure you read all the JavaScript notes while doing this homework. The JavaScript notes contain a lesson, Fundamental JavaScript Concepts, and a Review of the Document Object Model (DOM).
Starter
Q1: Function This
Implement the following function to take a list
and return the item in the list corresponding to the maximum value in
list after applying func
to each item.
function max(list, func) {
var maximum = _____;
for (var _____ of ______) {
var _____ = func(_____);
if (______ >= _____) {
______ = ______;
}
}
return maximum;
}
Q2: Flip It and Reverse It
Based on the previous question, in one line, write an anonymous function which,
when passed as func
to max
would cause max
to return the smallest value in
the list.
const reverser = _____;
Q3: What is This?
When objects are created, we use getters to set their initial values. Getters allow us to access value of the object during initialization. In the following function, complete the getter to compute the Euclidean distance between (a, b) and (x, y)
class Point {
constructor(x, y) {
// Initialize the point with the given x and y coordinates
}
distance(p) {
return Math.sqrt(
// return the Euclidean distance between this point and point p
// hint: Euclidean distance is given by sqrt((a - x)^2 + (b - y)^2)
)
}
}
Q4: Objects Gworl
Warning: Read the following spec very carefully
We want to create a general purpose function to keep records. We pass a JavaScript object, key, and value to our function, and in return, our function should do the following:
- If the current value of the item at
key
is a singular item, update thekey
to correspond tovalue
- If the current value of the item at
key
is a list, appendvalue
to the list - If the current value of the item at
key
is another JSON object, create a new entry usingkey
as the key andvalue
as the value
function changer(object, key, value) {
var ______ = ______;
if (Array.isArray(prev)) {
______;
} else if (typeof prev == 'object' && prev != null) {
______ = ______;
} else {
______ = ______;
}
return null;
}
Q5: Promises Promises
In this function, we want to print the numbers 1, 2, 3, 4, 5
in numerical
order. Using Promises, fill in the function to print numbers in the correct
order
async function promise_me(truthy) {
const a = new Promise((resolve, reject) => {
console.log(_____)
______(______)
})
console.log(2)
console.log(3)
console.log(4)
const five = ______ ______
console.log(five)
return five
}