> For the complete documentation index, see [llms.txt](https://raffycastlee.gitbook.io/marcyannotes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://raffycastlee.gitbook.io/marcyannotes/codechallenge-curriculum/unit-2/20241024.md).

# Unit 2 Diagnostic

with Carmen Salas • 2024/10/24

## Questions

1. Write a function named `sum` that takes in a string of digits, the function should return the sum of each digit in the string. You can assume there will be no spaces in the given string, you should return an integer.

```js
const sum = (str) => {
  return str.split('').reduce((sum,char) => Number(sum) + Number(char));
}

console.log(sum("123")); // returns 6, because 1+2+3 = 6
console.log(sum("2501")); //returns 8, because 2+5+0+1 = 8
```

2. Write a function `isNumWithinRange` that takes in three integer arguments, a number, a min number, and a max number. The function should return a boolean based on if the first argument is between the range of the min and max number.

```js
const isNumWithinRange = (num, min, max) => {
  return (num <= max && num >= min);
}

console.log(isNumWithinRange(3, 1, 5)); //returns true, because 3 is between 1 and 5 
console.log(isNumWithinRange(5, 1, 5));//returns true, because 5 is between 1 and 5 
console.log(isNumWithinRange(11, 5, 10)); //returns false, because 11 is not between 5 and 
```

3. Write a function named `countFromOne` that takes in an integer argument, and returns an array of integers, where the elements are the numbers between 1 and the given argument, ordered from least to greatest.

```js
const countFromOne = (int) => {
  return [...Array(int)].map((val, index, arr) => index+1);
}

console.log(countFromOne(5)) //returns [1,2,3,4,5]
console.log(countFromOne(0)) //returns []
console.log(countFromOne(10)) //returns [1,2,3,4,5,6,7,8,9,10]
```

4. Declare a function named `findShortestWord`, that takes an array of strings as an argument, and returns the shortest string in the array. If there is more than one shortest string, the function should return the **first** shortest string that appears in the array.

```js
const findShortestWord = (strArr) => {
  return strArr.reduce((res, str) => (str.length < res.length) ? str : res);
}

console.log(findShortestWord(["The","quick","brown", "fox", "jumped", "over", "the", "lazy", "dog"])) //returns "The"
console.log(findShortestWord(["jazzy", "jumpy", "quaky"])) //returns "jazzy"
```

5. Write a function named `vowelCount` that takes in a string and returns an object where the keys are letters in the given string that are vowels and the value of each vowel key is a count of how many times the character appears in the string. For this problem, vowels are `a`,`e`,`i`,`o`,`u`.

```js
const vowelCount = (str) => {
  return str.match(/[aeiou]/g).reduce((res, char) => {
    (res[char]) ? res[char]++ : res[char] = 1;
    return res;
  }, {});
}

console.log(vowelCount("aaa")) // returns {"a": 3}
console.log(vowelCount("code challenge")) // returns {"o": 1, "e":3, "a":1,}
```
