From 6041d35124443615476d82fe9d2885517e8f0eb5 Mon Sep 17 00:00:00 2001 From: Shanice Bandoo Date: Mon, 22 Jul 2024 21:35:43 -0400 Subject: [PATCH] Solved lab. --- src/movies.js | 47 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/src/movies.js b/src/movies.js index 1ad02ff68..d5bd1ad16 100644 --- a/src/movies.js +++ b/src/movies.js @@ -1,25 +1,56 @@ // Iteration 1: All directors? - Get the array of all directors. // _Bonus_: It seems some of the directors had directed multiple movies so they will pop up multiple times in the array of directors. // How could you "clean" a bit this array and make it unified (without duplicates)? -function getAllDirectors(moviesArray) {} +function getAllDirectors(moviesArray) { + return moviesArray.map(movie => movie.director); +} // Iteration 2: Steven Spielberg. The best? - How many drama movies did STEVEN SPIELBERG direct? -function howManyMovies(moviesArray) {} +function howManyMovies(moviesArray) { + return moviesArray.filter(movie => movie.director === 'Steven Spielberg' && movie.genre.includes('Drama')).length; +} // Iteration 3: All scores average - Get the average of all scores with 2 decimals -function scoresAverage(moviesArray) {} +function scoresAverage(moviesArray) { + if(moviesArray.length === 0){ + return 0; + } + + const totalScore = moviesArray.reduce((sum, movie) => { + return sum + movie.score; + }); + + return +(totalScore / moviesArray.length).toFixed(2); +} // Iteration 4: Drama movies - Get the average of Drama Movies -function dramaMoviesScore(moviesArray) {} +function dramaMoviesScore(moviesArray) { + const dramaMovies = moviesArray.filter(movie => movie.genre.includes('Drama')); + return scoresAverage(dramaMovies); +} // Iteration 5: Ordering by year - Order by year, ascending (in growing order) -function orderByYear(moviesArray) {} +function orderByYear(moviesArray) { + return moviesArray.sort((a, b) => a.year - b.year); +} // Iteration 6: Alphabetic Order - Order by title and print the first 20 titles -function orderAlphabetically(moviesArray) {} +function orderAlphabetically(moviesArray) { + return moviesArray.sort((a, b) => a.title.localeCompare(b.title)).slice(0, 20); +} // BONUS - Iteration 7: Time Format - Turn duration of the movies from hours to minutes -function turnHoursToMinutes(moviesArray) {} +function turnHoursToMinutes(moviesArray) { + return moviesArray.map(movie => { + const [hours, minutes] = movie.duration.split('h').map(Number); + return { ...movie, duration: hours * 60 + minutes }; + }); +} // BONUS - Iteration 8: Best yearly score average - Best yearly score average -function bestYearAvg(moviesArray) {} +function bestYearAvg(moviesArray) { + const years = moviesArray.map(movie => movie.year).reduce((acc, year) => { + if(!acc[year]) acc[year] = 0; + return acc; + }, {}); +}