Skip to content
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
299 changes: 212 additions & 87 deletions src/functions-and-arrays.js
Original file line number Diff line number Diff line change
@@ -1,130 +1,255 @@
// Iteration #1: Find the maximum
function maxOfTwoNumbers() {}

function maxOfTwoNumbers(a, b) {
if (a > b) {
return a;
} else {
return b;
}
}

console.log(maxOfTwoNumbers(5, 10)); // Devuelve: 10



// Iteration #2: Find longest word

const words = ['mystery', 'brother', 'aviator', 'crocodile', 'pearl', 'orchard', 'crackpot'];

function findLongestWord() {}
function findLongestWord(words) {
if (words.length === 0) return null; // Manejar el caso del array vacío

let longestWord = words[0]; // Comienza con la primera palabra como la más larga inicialmente

for (let i = 1; i < words.length; i++) {
if (words[i].length > longestWord.length) {
longestWord = words[i]; // Actualiza si encontramos una palabra más larga
}
}

return longestWord;
}

console.log(findLongestWord(words)); // Devuelve: "crocodile"


// Iteration #3: Calculate the sum

const numbers = [6, 12, 1, 18, 13, 16, 2, 1, 8, 10];

function sumNumbers() {}
function sumNumbers(numbers) {

let total = 0; // Inicializa la variable para acumular la suma de los números

for (let i = 0; i < numbers.length; i++) {
total += numbers[i]; // Sumar el valor de cada elemento al total
}

return total; // Devuelve la suma total de los números
}

console.log(sumNumbers(numbers)); // Devuelve: 87



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


function sum(arr) {
let total = 0; // Inicializa la variable para acumular la suma

for (let i = 0; i < arr.length; i++) {
if (typeof arr[i] === 'number') {
total += arr[i]; // Suma directamente los números
} else if (typeof arr[i] === 'string') {
total += arr[i].length; // Suma la longitud de las strings
} else if (typeof arr[i] === 'boolean') {
total += arr[i] ? 1 : 0; // Suma 1 si es true, 0 si es false
} else {
throw new Error("Unsupported data type in array"); // Maneja tipos de datos no soportados
}
}

return total; // Devuelve la suma total
}

const arr = [6, 12, 'miami', 1, true, 'barca', '200', 'lisboa', 8, 10];
console.log(sum(arr)); // Devuelve: 57



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

function averageNumbers() {}
// Función para calcular la suma de un array de números
function sumNumbers(numbers) {
let total = 0; // Inicializa la variable para acumular la suma de los números

for (let i = 0; i < numbers.length; i++) {
total += numbers[i]; // Sumar el valor de cada elemento al total
}

return total; // Devuelve la suma total de los números
}

// Función para calcular la media de un array de números
function averageNumbers(numbers) {
if (numbers.length === 0) return null; // Manejo de array vacío

let total = sumNumbers(numbers); // Utiliza sumNumbers para obtener la suma
return total / numbers.length; // Devuelve la media
}

console.log(averageNumbers(numbers)); // Devuelve: 8.7



// Level 1: Array of numbers (MIRA ESTE EJEMPLO, NO PUEDO CAMBIAR CONST PONIENDO ESTOS NUMEEROS const numbers = [2, 6, 9, 10, 7, 4, 1, 9];)

const numbersAvg = [6, 12, 1, 18, 13, 16, 2, 1, 8, 10];


function averageNumbers(numbers) {
if (numbers.length === 0) return null; // Manejo del caso en que el array esté vacío

let total = 0;
for (let i = 0; i < numbers.length; i++) {
total += numbers[i]; // Sumar cada elemento del array al total
}

return total / numbers.length; // Calcular y devolver la media
}


console.log(averageNumbers(numbers)); Devuelve: 8.7


// Level 2: Array of strings

const wordsArr = ['seat', 'correspond', 'linen', 'motif', 'hole', 'smell', 'smart', 'chaos', 'fuel', 'palace'];

function averageWordLength() { }
function averageWordLength(words) {
if (words.length === 0) return null; // Manejo del caso donde el array está vacío

let totalLength = 0;

for (let i = 0; i < words.length; i++) {
totalLength += words[i].length; // Sumar la longitud de cada palabra al total
}

return totalLength / words.length; // Calcular y devolver la longitud media
}


console.log(averageWordLength(wordsArr)); // Imprime: 5.3


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

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

function uniquifyArray() {}

function avg(arr) {
if (arr.length === 0) return null; // Manejo del caso donde el array está vacío

let total = 0;

// Iteration #6: Find elements
const wordsFind = ['machine', 'subset', 'trouble', 'starting', 'matter', 'eating', 'truth', 'disobedience'];
for (let i = 0; i < arr.length; i++) {
const element = arr[i];
if (typeof element === 'number') {
total += element; // Sumar número directamente
} else if (typeof element === 'string') {
total += element.length; // Sumar la longitud de la cadena
} else if (typeof element === 'boolean') {
total += element ? 1 : 0; // Sumar 1 si es true y 0 si es false
} else {
throw new Error("Unsupported data type in array"); // Manejo de tipos no soportados
}
}

function doesWordExist() {}
return total / arr.length; // Devuelve la media
}

// Ejemplo de uso
const mixedArr = [6, 12, 'miami', 1, true, 'barca', '200', 'lisboa', 8, 10];
console.log(avg(mixedArr)); // Debería devolver: 5.7


// 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]
];

function greatestProduct() {}
// Iteration #5: Unique arrays ERROR-> (MIRA ESTE EJEMPLO, NO PUEDO CAMBIAR CONST SI CONST WORDS ERA ARRIBA-> const words = ['mystery', 'brother', 'aviator', 'crocodile', 'pearl', 'orchard', 'crackpot'];



const wordsUnique =
[
'mystery',
'brother',
'aviator',
'crocodile',
'pearl',
'orchard',
'crackpot'
];



function uniquifyArray(words) {
if (words.length === 0) return null; // Manejo del caso de un array vacío

const uniqueWords = [];

for (let i = 0; i < words.length; i++) {
if (uniqueWords.indexOf(words[i]) === -1) {
uniqueWords.push(words[i]); // Añade la palabra solo si no está ya en uniqueWords
}
}

return uniqueWords;
}


console.log(uniquifyArray(words)); // Imprime: ['mystery', 'brother', 'aviator', 'crocodile', 'pearl', 'orchard', 'crackpot']




// Iteration #6: Find elements preguntar, hecho con wordsArray=['mystery', 'brother', 'aviator', 'crocodile', 'pearl', 'orchard', 'crackpot'];

const wordsArray = ['mystery', 'brother', 'aviator', 'crocodile', 'pearl', 'orchard', 'crackpot'];

function doesWordExist(wordsArray, wordToFind) {
if (wordsArray.length === 0) return false; // Manejo del caso de un array vacío

for (let i = 0; i < wordsArray.length; i++) {
if (wordsArray[i] === wordToFind) {
return true; // Devuelve true si se encuentra la palabra
}
}

return false; // Devuelve false si no se encuentra la palabra
}

console.log(doesWordExist(words, 'aviator')); // Devuelve: true
console.log(doesWordExist(words, 'unicorn')); // Devuelve: false


// Iteration #7: Count repetition

const wordsCount = [
['mystery', 'brother', 'aviator', 'crocodile', 'pearl', 'orchard', 'crackpot']
];

// The following is required to make unit tests work.
/* Environment setup. Do not modify the below code. */
if (typeof module !== 'undefined') {
module.exports = {
maxOfTwoNumbers,
findLongestWord,
sumNumbers,
sum,
averageNumbers,
averageWordLength,
avg,
uniquifyArray,
doesWordExist,
howManyTimes,
greatestProduct
};
function howManyTimes(wordsArray, wordToCount) {
if (wordsArray.length === 0) return 0;

let count = 0;
for (let i = 0; i < wordsArray.length; i++) {
if (wordsArray[i] === wordToCount) {
count++; //
}
}

return count;
}

console.log(howManyTimes(wordsCount, 'orchard')); // Prints: 0