Skip to content

Instantly share code, notes, and snippets.

@hartbeatnt
Created August 24, 2016 04:36
Show Gist options
  • Save hartbeatnt/0a5030fe522aa87f255e24abe8136405 to your computer and use it in GitHub Desktop.
Save hartbeatnt/0a5030fe522aa87f255e24abe8136405 to your computer and use it in GitHub Desktop.
Nate Hart's Checkpoint 1
/*Write a function average that takes two numbers as input (parameters),
and returns the average of those numbers.*/
function average(num1, num2) {
return (num1 + num2) / 2;
}
/*Write a function greeter that takes a name as an argument and greets
that name by returning something along the lines of "Hello, <name>!"*/
function greeter(name) {
return "Well hello there, " + name;
}
/*Write the following functions that each accept a single number as an argument:
even: returns true if its argument is even, and false otherwise.
odd: the opposite of the above.
positive: returns true if its argument is positive, and false otherwise.
negative: the opposite of the above.
*/
function even(n) {
return n % 2 === 0;
}
function odd(n) {
return n % 2 !== 0;
}
function positive(n) {
return n > 0;
}
function negative(n) {
return n < 0;
}
/*Write a function sayHello that takes a language parameter, and returns "hello"
in that language. Make the function work with at least three languages.*/
function sayHello(lang) {
lang = lang.toLowerCase();
if (lang === "spanish")
return "hola";
if (lang === "french")
return "bonjour";
if (lang === "hebrew")
return "shalom";
return "I don't speak " + lang;
}
/*Write a function validCredentials that accepts two parameters: username and
password, and returns true if both are long enough, and false otherwise. You can
decide what constitutes "long enough".*/
function validCredentials(username, password) {
minUserNameLength = 6;
minPasswordLength = 8;
return username.length >= minUserNameLength && password.length >= minPasswordLength;
}
/*Repeating a String n Times: Let's write a function called repeatString that takes
two parameters: a string str, which is the string to be repeated, and count -- a
number representing how many times the string str should be repeated, e.g.
repeatString('dog', 0); // => ''
repeatString('dog', 1); // => 'dog'
repeatString('dog', 2); // => 'dog' + 'dog' => 'dogdog'
repeatString('dog', 3); // => 'dog' + 'dog' + 'dog' => 'dogdogdog'
*/
function repeatString(str, count) {
var newStr = "";
for (var i = 0; i < count; i++) {
newStr = newStr + str;
}
return newStr;
}
/*Write a function called average that takes an array of numbers as a parameter
and returns the average of those numbers.*/
function average(arr) {
var sum = 0;
for (var i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum / arr.length;
}
/*Write a function countWords that, when given a string as an argument, returns
an object where keys are the words in the string, and values are the number of
occurrences of that word within the string:*/
function countWords(str) {
str = str.toLowerCase()
var arr = str.split(" ");
var wordObj = {};
for (var i = 0; i < arr.length; i++) {
if (wordObj[arr[i]] === undefined)
wordObj[arr[i]] = 0;
wordObj[arr[i]]++
}
return wordObj;
}
countWords("hello hello"); // => {"hello": 2}
countWords("Hello hello"); // => {"Hello": 1, "hello": 1}
countWords("The quick brown"); // => {"The": 1, "quick": 1, "brown": 1}
/*HINT: You will want to make use of the string method split. Try \"Hello hello".split(" ")
at a console to see how it works.
Modify countWords to be case insensitive by using the following string method
(experiment at a console with it to learn its behavior):*/
"HElLo".toLowerCase(); // => hello
//BONUS
/*Read about the join method on MDN and use it to implement a function that
accepts a string as an argument and returns that string reversed.*/
function reverse(str) {
var arr = str.split("");
var newArr = [];
for (var i = 0; i < arr.length; i++) {
newArr[i] = arr[arr.length - i - 1];
}
return newArr.join("");
}
/*The function Object.keys returns an array of an object's keys. Experiment with it at
the console like this:*/
Object.keys({a: 1, b: 2});
/*Using this property, write versions of the above functions using repetition through
function invocation (i.e. recursion)*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment