Skip to content

Instantly share code, notes, and snippets.

@fbslee
Created August 24, 2016 04:37
Show Gist options
  • Save fbslee/c81d886c63222f9d95265affbff886c6 to your computer and use it in GitHub Desktop.
Save fbslee/c81d886c63222f9d95265affbff886c6 to your computer and use it in GitHub Desktop.
# W2D2 Checkpoint
Submit a link to your gist [here](https://goo.gl/forms/HywFjkNIU9mLM7c03)
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;
}
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 "Hello, " + name + "! How are you?";
}
3. 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(num1){
return num1 % 2 === 0;
}
function odd (num2){
return num2 % 2 !== 0;
}
function positive(num3){
return num3 > 0;
}
function negative(num4){
return num4 < 0;
}
4. 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(language){
if(language === "English"){
return "Hello!";
}
if(language === "Portuguese"){
return "Ola!";
}
if(language === "Spanish"){
return "Hola!";
}
return "Unknown language";
}
5. 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){
return (username.length >= 6 && password.length >= 6);
}
6. **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.*
function repeatString(str,count){
return str.repeat(count);
}
```js
function repeatString(str, count) {
// TODO: your code here
}
repeatString('dog', 0); // => ''
repeatString('dog', 1); // => 'dog'
repeatString('dog', 2); // => 'dog' + 'dog' => 'dogdog'
repeatString('dog', 3); // => 'dog' + 'dog' + 'dog' => 'dogdogdog'
```
7. Write a function called `average` that takes an array of numbers as a
parameter and returns the *average* of those numbers.
var numbers = [];
function average(numbers){
var total = 0;
for (var i = 0; i < numbers.length; i++){
total = total + numbers[i]
}
return total / numbers.length;
}
8. 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:
```js
function countWords(s) {
// ...
}
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):
```js
"HElLo".toLowerCase(); // => ???
```
function countWords(s){
var words = (s.toLowerCase()).split(" ");
var history = {};
for (var i = 0; i < words.length; i++){
if(history[words[i]]){
history[words[i]]++;
}
else {
history[words[i]] = 1;
}
}
return history;
}
### Bonus
1. 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 reverseString(str){
return str.split('').reverse().join('');
}
2. The function `Object.keys` returns an array of an object's *keys*. Experiment
with it at the console like this:
```js
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