Skip to content

lab done #4218

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
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
267 changes: 189 additions & 78 deletions src/functions-and-arrays.js
Original file line number Diff line number Diff line change
@@ -1,119 +1,230 @@
// Iteration #1: Find the maximum
function maxOfTwoNumbers() {}

function maxOfTwoNumbers(num1, num2) {
if (num1 > num2) {
return num1;
} else if (num2 > num1) {
return num2;
} else {
return num1;
}
}

let resultado1 = maxOfTwoNumbers(10, 20);
console.log(resultado1);

// Iteration #2: Find longest word
const words = ['mystery', 'brother', 'aviator', 'crocodile', 'pearl', 'orchard', 'crackpot'];
let resultado2 = maxOfTwoNumbers(20, 10);
console.log(resultado2);

function findLongestWord() {}
let resultado3 = maxOfTwoNumbers(20, 20);
console.log(resultado3);

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

function findLongestWord(words) {
// La condición de null tiene que estar fuera del bucle
// Esta condición es una medida de seguridad. El array no debería estar vacío, pero a veces puede suceder un fallo en algún lado y que haya un array vacío sin querer. Esta línea es un bloqueo para evitar que haya un error, una forma de prevenir fallos.
// (words): longitud del array; (words[i]): longitud de la palabra
if (words.length === 0) {
return null;
}
let longestWord = "";

// Empieza el bucle para ver la longitud de cada palabra de la lista
for (let i = 0; i < words.length; i++) {
// Si la palabra de esta vuelta (words[i].length) es MÁS LARGA que que la variable longestWord, actualizamos longestWord (i)
if (words[i].length > longestWord.length) {
longestWord = words[i];
}
}

return longestWord;
}

console.log(findLongestWord(words));

// Iteration #3: Calculate the sum
const numbers = [6, 12, 1, 18, 13, 16, 2, 1, 8, 10];
function sumNumbers(numbers) {
return numbers.reduce(
(accumulator, currentValue) => accumulator + currentValue,
0
);
}

function sumNumbers() {}



// Iteration #3.1 Bonus:
function sum() {}


console.log(sumNumbers(numbers));

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

function averageNumbers() {}

// 1º: se suman los elementos del array
function sumNumbers(numbersAvg) {
return numbersAvg.reduce(
(accumulator, currentValue) => accumulator + currentValue,
0
);
}
console.log(sumNumbers(numbersAvg));

// 2º: se divide la suma entre el número de elementos del array
function averageNumbers(numbersAvg) {
if (numbersAvg.length === 0) {
return null;
}
const sum = sumNumbers(numbersAvg);
const average = sum / numbersAvg.length;
return average;
}
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;
}

function averageWordLength() { }
// Aquí estamos sumando las longitudes de las palabras
const totalLength = wordsArr.reduce(
(accumulator, currentValue) => accumulator + currentValue.length,
0
);

// Aquí se calcula el average dividiendo la suma total de las longitudes de las palabras (totalLength) entre el nº de palabras (wordsArr.length)
return totalLength / wordsArr.length;
}

// Bonus - Iteration #4.1
function avg() {}
console.log(averageWordLength(wordsArr));

// 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(arr) {
if (arr.length === 0) {
return null;
}

// Se crea un array vacío para almacenar los valores únicos
let uniqueArr = [];

// Con el bucle, vamos por cada elemento del array (arr). Para cada elemento, se verifica si ya existe en el array de valores únicos (uniqueArr) utilizando includes(). Si no existe, se añade con push()
for (let i = 0; i < arr.length; i++) {
if (!uniqueArr.includes(arr[i])) {
uniqueArr.push(arr[i]);
}
}
return uniqueArr;
}
console.log(uniquifyArray(wordsUnique));

//Otra forma: [...new] significa nuevo, crea un nuevo array. Para una copia de algo que ya existe: [Set(arr)], apunta al array que ya existe.
//return [...new Set(arr)];
//console.log(uniquifyArray(wordsUnique));

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

function doesWordExist() {}
const wordsFind = [
"machine",
"subset",
"trouble",
"starting",
"matter",
"eating",
"truth",
"disobedience",
];

// 2 argumentos en la función: el array y la palabra que se busca en el array
function doesWordExist(arr, word) {
if (!word) {
return null;
}
// Miramos si la palabra existe (=está incluida) en el array
return arr.includes(word);
}

console.log(doesWordExist(wordsFind, "matter"));
console.log(doesWordExist(wordsFind, "flower"));

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

function howManyTimes() {}



// Iteration #8: Bonus
const matrix = [
[8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 50, 77, 91, 8],
[49, 49, 99, 40, 17, 81, 18, 57, 60, 87, 17, 40, 98, 43, 69, 48, 4, 56, 62, 0],
[81, 49, 31, 73, 55, 79, 14, 29, 93, 71, 40, 67, 53, 88, 30, 3, 49, 13, 36, 65],
[52, 70, 95, 23, 4, 60, 11, 42, 69, 24, 68, 56, 1, 32, 56, 71, 37, 2, 36, 91],
[22, 31, 16, 71, 51, 67, 63, 89, 41, 92, 36, 54, 22, 40, 40, 28, 66, 33, 13, 80],
[24, 47, 32, 60, 99, 3, 45, 2, 44, 75, 33, 53, 78, 36, 84, 20, 35, 17, 12, 50],
[32, 98, 81, 28, 64, 23, 67, 10, 26, 38, 40, 67, 59, 54, 70, 66, 18, 38, 64, 70],
[67, 26, 20, 68, 2, 62, 12, 20, 95, 63, 94, 39, 63, 8, 40, 91, 66, 49, 94, 21],
[24, 55, 58, 5, 66, 73, 99, 26, 97, 17, 78, 78, 96, 83, 14, 88, 34, 89, 63, 72],
[21, 36, 23, 9, 75, 0, 76, 44, 20, 45, 35, 14, 0, 61, 33, 97, 34, 31, 33, 95],
[78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 3, 80, 4, 62, 16, 14, 9, 53, 56, 92],
[16, 39, 5, 42, 96, 35, 31, 47, 55, 58, 88, 24, 0, 17, 54, 24, 36, 29, 85, 57],
[86, 56, 0, 48, 35, 71, 89, 7, 5, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58],
[19, 80, 81, 68, 5, 94, 47, 69, 28, 73, 92, 13, 86, 52, 17, 77, 4, 89, 55, 40],
[4, 52, 8, 83, 97, 35, 99, 16, 7, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66],
[88, 36, 68, 87, 57, 62, 20, 72, 3, 46, 33, 67, 46, 55, 12, 32, 63, 93, 53, 69],
[4, 42, 16, 73, 38, 25, 39, 11, 24, 94, 72, 18, 8, 46, 29, 32, 40, 62, 76, 36],
[20, 69, 36, 41, 72, 30, 23, 88, 34, 62, 99, 69, 82, 67, 59, 85, 74, 4, 36, 16],
[20, 73, 35, 29, 78, 31, 90, 1, 74, 31, 49, 71, 48, 86, 81, 16, 23, 57, 5, 54],
[1, 70, 54, 71, 83, 51, 54, 69, 16, 92, 33, 48, 61, 43, 52, 1, 89, 19, 67, 48]
"machine",
"matter",
"subset",
"trouble",
"starting",
"matter",
"eating",
"matter",
"truth",
"disobedience",
"matter",
];

function greatestProduct() {}


// Devolver 0 si el array está vacío
function howManyTimes(repeatArr, searchWord) {
if (repeatArr.length === 0) {
return 0;
}

// Si la palabra coincide con searchWord, el contador sube
let count = 0;
repeatArr.forEach((word) => {
if (word === searchWord) {
count++;
}
});

if (count === 0) {
return 0; // Devuelve 0 si la palabra no está en el array
} else if (count === 1) {
return 1; // Devuelve 1 si la palabra está solo una vez en el array
} else if (count === 5) {
return 5; // Devuelve 5 si la palabra está 5 veces en el array
}

return count;
}

console.log(howManyTimes(wordsCount, "matter"));
console.log(howManyTimes(wordsCount, "flower"));

// The following is required to make unit tests work.
/* Environment setup. Do not modify the below code. */
if (typeof module !== 'undefined') {
if (typeof module !== "undefined") {
module.exports = {
maxOfTwoNumbers,
findLongestWord,
Expand All @@ -125,6 +236,6 @@ if (typeof module !== 'undefined') {
uniquifyArray,
doesWordExist,
howManyTimes,
greatestProduct
greatestProduct,
};
}