Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
302 changes: 266 additions & 36 deletions src/functions-and-arrays.js
Original file line number Diff line number Diff line change
@@ -1,85 +1,295 @@
// Iteration #1: Find the maximum
function maxOfTwoNumbers() {}

function maxOfTwoNumbers(numOne, numTwo) {
if (numOne > numTwo) {
return numOne;
} else if (numOne < numTwo) {
return numTwo;
} else {
return numOne || numTwo;
}
}

// console.log(maxOfTwoNumbers(2, 8))



// Iteration #2: Find longest word
const words = ['mystery', 'brother', 'aviator', 'crocodile', 'pearl', 'orchard', 'crackpot'];

function findLongestWord() {}
const words = [
"mystery",
"brother",
"aviator",
"crocodile",
"pearl",
"orchard",
"crackpot",
];

function findLongestWord(words) {
if (words.length == 0) {
return null;
}

let longWord = "";

for (let word of words) {
if (word.length > longWord.length) {
longWord = word;
}
}
return longWord;
}

// console.log(findLongestWord(words))



// Iteration #3: Calculate the sum
const numbers = [6, 12, 1, 18, 13, 16, 2, 1, 8, 10];

function sumNumbers() {}
function sumNumbers(numbers) {
if (numbers.length === 0) {
return 0;
}

let pallino = 0;

for (let i = 0; i < numbers.length; i++) {
pallino += numbers[i];
}

return pallino;
}

/*

function sumNumbers(arrNum) {
let sum = 0;
for (num of arrNum)
{
sum = sum + num;
}
return sum;
}
console.log(sumNumbers(numbers))

*/


// Iteration #3.1 Bonus:
function sum() {}
const mixedArr = [6, 12, "miami", 1, true, "barca", "200", "lisboa", 8, 10];

function sum(mixedArr) {
if (mixedArr.length === 0) {
return 0;
}

let numberSum = 0;
let stringSum = 0;
let booleanSum = 0;

for (let i = 0; i < mixedArr.length; i++) {
if (typeof mixedArr[i] === "number") {
numberSum = numberSum += mixedArr[i];
} else if (typeof mixedArr[i] === "string") {
stringSum = stringSum + mixedArr[i].length;
} else if (typeof mixedArr[i] === "boolean") {
booleanSum = booleanSum += mixedArr[i];
} else throw new Error("Error message goes here");
}

let totalSum = numberSum + stringSum + booleanSum;

return totalSum
}

// console.log(sum(mixedArr))



// Iteration #4: Calculate the average
// Level 1: Array of numbers
const numbersAvg = [2, 6, 9, 10, 7, 4, 1, 9];

function averageNumbers() {}
function averageNumbers(numbersAvg) {

if (numbersAvg.length === 0) {
return null;
}

let count = 0
let sum = 0

count = count + numbersAvg.length
// should we use count = numbersAvg.length or count = count + numbersAvg.length?
sum = sumNumbers(numbersAvg)
return sum / count;
}

// console.log(averageNumbers(numbersAvg))


// Level 2: Array of strings
const wordsArr = ['seat', 'correspond', 'linen', 'motif', 'hole', 'smell', 'smart', 'chaos', 'fuel', 'palace'];
const wordsArr = [
"seat",
"correspond",
"linen",
"motif",
"hole",
"smell",
"smart",
"chaos",
"fuel",
"palace",
];

function averageWordLength(wordsArr) {
if (wordsArr.length === 0) {
return null;
}

let length = 0
let count = wordsArr.length

for (let i = 0; i < wordsArr.length; i++) {
length += wordsArr[i].length;
}
return length / count
}

function averageWordLength() { }
// console.log(averageWordLength(wordsArr))

// Bonus - Iteration #4.1
function avg() {}

/*
Create function avg(arr) that receives any mixed array and calculates the average. For example, consider an array filled with numbers and/or strings and/or booleans as a mixed array.

The non-numerical values should be counted as follows:

Booleans: true counts as 1 and false counts as 0.
Strings: use the string length as the numeric value.
const mixedArr = [6, 12, 'miami', 1, true, 'barca', '200', 'lisboa', 8, 10];

// should return: 5.7
*/

/* const mixedArr = [6, 12, "miami", 1, true, "barca", "200", "lisboa", 8, 10]; */

function avg(mixedArr) {
if (mixedArr.length === 0) {
return null;
}

let somma = 0
let count = mixedArr.length

somma = somma + sum(mixedArr)
/*let sum = 0
let count = mixed.length

for (let i = 0; i < numberList.length; i++) {
sum += numberList[i];
} */

return somma / count
}

// console.log(avg(mixedArr))

// Iteration #5: Unique arrays
const wordsUnique = [
'crab',
'poison',
'contagious',
'simple',
'bring',
'sharp',
'playground',
'poison',
'communion',
'simple',
'bring'
"crab",
"poison",
"contagious",
"simple",
"bring",
"sharp",
"playground",
"poison",
"communion",
"simple",
"bring",
];

function uniquifyArray() {}
function uniquifyArray(wordsUnique) {
if (wordsUnique.length === 0) {
return null;
}

let uniqueWords = []

for (let word of wordsUnique) {
if (!uniqueWords.includes(word)) {
uniqueWords.push(word)
}
}
return uniqueWords
}

// console.log(uniquifyArray(wordsUnique))



// Iteration #6: Find elements
const wordsFind = ['machine', 'subset', 'trouble', 'starting', 'matter', 'eating', 'truth', 'disobedience'];
const wordsFind = [
"machine",
"subset",
"trouble",
"starting",
"matter",
"eating",
"truth",
"disobedience",
];

function doesWordExist(wordsFind, wordToSearch) {
if (wordsFind.length === 0) {
return null;
}

for (let word of wordsFind) {
if (word === wordToSearch) {
return true;
}
} return false;
}

function doesWordExist() {}
// console.log(doesWordExist(wordsFind, "matter"))



// Iteration #7: Count repetition
const wordsCount = [
'machine',
'matter',
'subset',
'trouble',
'starting',
'matter',
'eating',
'matter',
'truth',
'disobedience',
'matter'
"machine",
"matter",
"subset",
"trouble",
"starting",
"matter",
"eating",
"matter",
"truth",
"disobedience",
"matter",
];

function howManyTimes() {}
function howManyTimes(wordsCount, wordToSearch) {

if (wordsCount.length === 0) {
return 0;
}

let count = 0

for (let word of wordsCount) {
if (word === wordToSearch) {
count++
}
} return count
}

// console.log(howManyTimes(wordsCount, "disobedience"))


// Iteration #8: Bonus
Expand All @@ -106,7 +316,27 @@ const matrix = [
[1, 70, 54, 71, 83, 51, 54, 69, 16, 92, 33, 48, 61, 43, 52, 1, 89, 19, 67, 48]
];

function greatestProduct() {}
function greatestProduct(matrix) {
let greatestProduct = 0;

for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[i].length; j++) {
if (i <= matrix.length - 4) {
// Calculate product horizontally
let product = matrix[i][j] * matrix[i + 1][j] * matrix[i + 2][j] * matrix[i + 3][j];
if (product > greatestProduct) greatestProduct = product;
}
if (j <= matrix[i].length - 4) {
// Calculate product vertically
let product = matrix[i][j] * matrix[i][j + 1] * matrix[i][j + 2] * matrix[i][j + 3];
if (product > greatestProduct) greatestProduct = product;
}
}
}
return greatestProduct
}

// console.log(greatestProduct(matrix))



Expand Down